upmin 0.0.34

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +34 -0
  3. data/app/assets/images/upmin/logo_large.png +0 -0
  4. data/app/assets/images/upmin/logo_small.png +0 -0
  5. data/app/assets/javascripts/upmin/application.js +38 -0
  6. data/app/assets/javascripts/upmin/jquery-clockpicker.js +729 -0
  7. data/app/assets/javascripts/upmin/models.js +23 -0
  8. data/app/assets/javascripts/upmin/pikaday.js +997 -0
  9. data/app/assets/stylesheets/upmin/application.css +16 -0
  10. data/app/assets/stylesheets/upmin/base.css.scss +24 -0
  11. data/app/assets/stylesheets/upmin/button_mixins.scss +37 -0
  12. data/app/assets/stylesheets/upmin/colors.scss +20 -0
  13. data/app/assets/stylesheets/upmin/instances.css.scss +91 -0
  14. data/app/assets/stylesheets/upmin/jquery-clockpicker.css +370 -0
  15. data/app/assets/stylesheets/upmin/models.css.scss +207 -0
  16. data/app/assets/stylesheets/upmin/pikaday.css +196 -0
  17. data/app/controllers/upmin/application_controller.rb +4 -0
  18. data/app/controllers/upmin/models_controller.rb +94 -0
  19. data/app/helpers/upmin/application_helper.rb +17 -0
  20. data/app/helpers/upmin/instances_helper.rb +13 -0
  21. data/app/helpers/upmin/models_helper.rb +4 -0
  22. data/app/views/layouts/upmin/_navbar.html.haml +15 -0
  23. data/app/views/layouts/upmin/application.html.haml +24 -0
  24. data/app/views/upmin/models/_search_result.html.haml +25 -0
  25. data/app/views/upmin/models/dashboard.html.haml +9 -0
  26. data/app/views/upmin/models/search.html.haml +20 -0
  27. data/app/views/upmin/models/show.html.haml +21 -0
  28. data/app/views/upmin/search_boxes/_unknown.html.haml +31 -0
  29. data/app/views/upmin/search_fields/_string.html.haml +3 -0
  30. data/app/views/upmin/types/_datetime.html.haml +95 -0
  31. data/app/views/upmin/types/_integer.html.haml +6 -0
  32. data/app/views/upmin/types/_string.html.haml +7 -0
  33. data/app/views/upmin/types/_unknown.html.haml +2 -0
  34. data/app/views/upmin/types/_unknown_collection.html.haml +18 -0
  35. data/app/views/upmin/types/_unknown_model.html.haml +57 -0
  36. data/app/views/upmin/types/_unknown_model_badge.html.haml +3 -0
  37. data/app/views/upmin/types/_unknown_model_nested.html.haml +24 -0
  38. data/app/views/upmin/types/_unknown_model_search_result.html.haml +31 -0
  39. data/config/routes.rb +19 -0
  40. data/lib/tasks/accordive_rails_tasks.rake +4 -0
  41. data/lib/tasks/upmin_tasks.rake +4 -0
  42. data/lib/upmin.rb +44 -0
  43. data/lib/upmin/engine.rb +7 -0
  44. data/lib/upmin/graph/collection_node.rb +72 -0
  45. data/lib/upmin/graph/data_node.rb +69 -0
  46. data/lib/upmin/graph/model_node.rb +151 -0
  47. data/lib/upmin/graph/node.rb +98 -0
  48. data/lib/upmin/model.rb +131 -0
  49. data/lib/upmin/railtie.rb +19 -0
  50. data/lib/upmin/railties/active_record.rb +156 -0
  51. data/lib/upmin/railties/render.rb +56 -0
  52. data/lib/upmin/railties/render_helpers.rb +57 -0
  53. data/lib/upmin/version.rb +3 -0
  54. data/test/controllers/upmin/model_controller_test.rb +11 -0
  55. data/test/dummy/README.rdoc +28 -0
  56. data/test/dummy/Rakefile +6 -0
  57. data/test/dummy/app/assets/javascripts/application.js +13 -0
  58. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  59. data/test/dummy/app/controllers/application_controller.rb +5 -0
  60. data/test/dummy/app/helpers/application_helper.rb +2 -0
  61. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  62. data/test/dummy/bin/bundle +3 -0
  63. data/test/dummy/bin/rails +4 -0
  64. data/test/dummy/bin/rake +4 -0
  65. data/test/dummy/config.ru +4 -0
  66. data/test/dummy/config/application.rb +23 -0
  67. data/test/dummy/config/boot.rb +5 -0
  68. data/test/dummy/config/database.yml +25 -0
  69. data/test/dummy/config/environment.rb +5 -0
  70. data/test/dummy/config/environments/development.rb +37 -0
  71. data/test/dummy/config/environments/production.rb +83 -0
  72. data/test/dummy/config/environments/test.rb +39 -0
  73. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  74. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  75. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  76. data/test/dummy/config/initializers/inflections.rb +16 -0
  77. data/test/dummy/config/initializers/mime_types.rb +4 -0
  78. data/test/dummy/config/initializers/session_store.rb +3 -0
  79. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  80. data/test/dummy/config/locales/en.yml +23 -0
  81. data/test/dummy/config/routes.rb +4 -0
  82. data/test/dummy/config/secrets.yml +22 -0
  83. data/test/dummy/public/404.html +67 -0
  84. data/test/dummy/public/422.html +67 -0
  85. data/test/dummy/public/500.html +66 -0
  86. data/test/dummy/public/favicon.ico +0 -0
  87. data/test/helpers/upmin/model_helper_test.rb +6 -0
  88. data/test/integration/navigation_test.rb +10 -0
  89. data/test/test_helper.rb +15 -0
  90. data/test/upmin_test.rb +7 -0
  91. metadata +253 -0
@@ -0,0 +1,16 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any styles
10
+ * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
+ * file per style scope.
12
+ *
13
+ *= require_tree .
14
+ *= require_self
15
+ */
16
+
@@ -0,0 +1,24 @@
1
+ @import "colors";
2
+ @import "button_mixins";
3
+
4
+ body {
5
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
6
+ }
7
+
8
+ .navbar {
9
+
10
+ background-color: #2c3e50;
11
+ height: 60px;
12
+
13
+ }
14
+
15
+ .btn {
16
+ @each $color in $color_list {
17
+ $name: nth($color, 1);
18
+ $hex: nth($color, 2);
19
+
20
+ &.btn-#{$name} {
21
+ @include button-variant(#fff, $hex, $hex);
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,37 @@
1
+ @mixin button-variant($color, $background, $border) {
2
+ color: $color;
3
+ background-color: $background;
4
+ border-color: $border;
5
+
6
+ &:hover,
7
+ &:focus,
8
+ &:active,
9
+ &.active,
10
+ .open > &.dropdown-toggle {
11
+ color: $color;
12
+ background-color: darken($background, 10%);
13
+ border-color: darken($border, 12%);
14
+ }
15
+ &:active,
16
+ &.active,
17
+ .open > &.dropdown-toggle {
18
+ background-image: none;
19
+ }
20
+ &.disabled,
21
+ &[disabled],
22
+ fieldset[disabled] & {
23
+ &,
24
+ &:hover,
25
+ &:focus,
26
+ &:active,
27
+ &.active {
28
+ background-color: $background;
29
+ border-color: $border;
30
+ }
31
+ }
32
+
33
+ .badge {
34
+ color: $background;
35
+ background-color: $color;
36
+ }
37
+ }
@@ -0,0 +1,20 @@
1
+ $color_list: (
2
+ (yellow, #F1C40F),
3
+ (orange, #F39C12),
4
+ (red, #E74C3C),
5
+ (dark_red, #AB3326),
6
+ (purple, #9B59B6),
7
+ (dark_blue, #2C3E50),
8
+ (light_blue, #3498DB),
9
+ (blue_green, #18BC9C),
10
+ (green, #01C94F));
11
+
12
+ $yellow: #F1C40F;
13
+ $orange: #F39C12;
14
+ $red: #E74C3C;
15
+ $dark_red: #AB3326;
16
+ $purple: #9B59B6;
17
+ $dark_blue: #2C3E50;
18
+ $light_blue: #3498DB;
19
+ $blue_green: #18BC9C;
20
+ $green: #01C94F;
@@ -0,0 +1,91 @@
1
+ @import "colors";
2
+
3
+ .upmin-model {
4
+ padding: 20px;
5
+ margin: 10px 0px 10px 0;
6
+ border: 1px solid #eee;
7
+ border-left-width: 5px;
8
+ border-radius: 3px;
9
+
10
+ @each $color in $color_list {
11
+ $name: nth($color, 1);
12
+ $hex: nth($color, 2);
13
+
14
+ &.#{$name} {
15
+ border-left-color: $hex;
16
+ > h3, > h4 {
17
+ color: $hex;
18
+ > a {
19
+ color: $hex;
20
+ }
21
+ }
22
+ }
23
+ }
24
+
25
+ h3 {
26
+ margin-top: 6px;
27
+ font-size: 1.3em;
28
+ }
29
+ h4 {
30
+ margin-top: 4px;
31
+ font-size: 1.1em;
32
+ }
33
+ h5 {
34
+ margin-top: 24px;
35
+ margin-bottom: 6px;
36
+ }
37
+ h6 {
38
+ margin-top: 20px;
39
+ margin-bottom: 6px;
40
+ }
41
+
42
+ dd {
43
+ word-wrap: break-word;
44
+ }
45
+
46
+
47
+ .collection-search {
48
+ margin-top: 10px;
49
+ // margin-right: 20px;
50
+ font-size: 1.1em;
51
+
52
+ .input-group-btn {
53
+ button.btn-default {
54
+ padding: 9px;
55
+ }
56
+ }
57
+ }
58
+
59
+ input {
60
+ height: 40px;
61
+ font-size: 1.1em;
62
+ }
63
+
64
+ .well {
65
+ padding: 9px;
66
+ margin-bottom: 0;
67
+ min-height: 40px;
68
+ }
69
+
70
+ a.active-tag-link {
71
+ text-decoration: none;
72
+ .label {
73
+ padding: 4px 6px 5px 6px;
74
+ }
75
+ }
76
+
77
+ .label {
78
+ margin-right: 10px;
79
+ font-weight: 500;
80
+
81
+ @each $color in $color_list {
82
+ $name: nth($color, 1);
83
+ $hex: nth($color, 2);
84
+
85
+ &.#{$name} {
86
+ background-color: $hex;
87
+ }
88
+ }
89
+ }
90
+
91
+ }
@@ -0,0 +1,370 @@
1
+ /*!
2
+ * ClockPicker v0.0.7 for jQuery (http://weareoutman.github.io/clockpicker/)
3
+ * Copyright 2014 Wang Shenwei.
4
+ * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/gh-pages/LICENSE)
5
+ *
6
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
7
+ * Copyright 2011-2014 Twitter, Inc.
8
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
9
+ */
10
+
11
+ /* Picked from bootstrap: .popover, .btn, .text-primary */
12
+
13
+ .popover {
14
+ position: absolute;
15
+ top: 0;
16
+ left: 0;
17
+ z-index: 1010;
18
+ display: none;
19
+ max-width: 276px;
20
+ padding: 1px;
21
+ text-align: left;
22
+ white-space: normal;
23
+ background-color: #fff;
24
+ background-clip: padding-box;
25
+ border: 1px solid #ccc;
26
+ border: 1px solid rgba(0, 0, 0, .2);
27
+ border-radius: 6px;
28
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
29
+ box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
30
+ }
31
+ .popover.top {
32
+ margin-top: -10px;
33
+ }
34
+ .popover.right {
35
+ margin-left: 10px;
36
+ }
37
+ .popover.bottom {
38
+ margin-top: 10px;
39
+ }
40
+ .popover.left {
41
+ margin-left: -10px;
42
+ }
43
+ .popover-title {
44
+ padding: 8px 14px;
45
+ margin: 0;
46
+ font-size: 14px;
47
+ font-weight: normal;
48
+ line-height: 18px;
49
+ background-color: #f7f7f7;
50
+ border-bottom: 1px solid #ebebeb;
51
+ border-radius: 5px 5px 0 0;
52
+ }
53
+ .popover-content {
54
+ padding: 9px 14px;
55
+ }
56
+ .popover > .arrow,
57
+ .popover > .arrow:after {
58
+ position: absolute;
59
+ display: block;
60
+ width: 0;
61
+ height: 0;
62
+ border-color: transparent;
63
+ border-style: solid;
64
+ /* The following are set in WordPress (wp-admin/css/revisions.css) - reset them to initial values */
65
+ overflow:visible;
66
+ margin:0;
67
+ padding:0;
68
+ z-index:auto;
69
+ background-color:transparent;
70
+ -webkit-box-shadow:none;
71
+ box-shadow:none;
72
+ bottom:auto;
73
+ left:auto;
74
+ right:auto;
75
+ top:auto;
76
+ -webkit-transform:none;
77
+ -ms-transform:none;
78
+ transform:none;
79
+ }
80
+ .popover > .arrow {
81
+ border-width: 11px;
82
+ }
83
+ .popover > .arrow:after {
84
+ content: "";
85
+ border-width: 10px;
86
+ }
87
+ .popover.top > .arrow {
88
+ bottom: -11px;
89
+ left: 50%;
90
+ margin-left: -11px;
91
+ border-top-color: #999;
92
+ border-top-color: rgba(0, 0, 0, .25);
93
+ border-bottom-width: 0;
94
+ }
95
+ .popover.top > .arrow:after {
96
+ bottom: 1px;
97
+ margin-left: -10px;
98
+ content: " ";
99
+ border-top-color: #fff;
100
+ border-bottom-width: 0;
101
+ }
102
+ .popover.right > .arrow {
103
+ top: 50%;
104
+ left: -11px;
105
+ margin-top: -11px;
106
+ border-right-color: #999;
107
+ border-right-color: rgba(0, 0, 0, .25);
108
+ border-left-width: 0;
109
+ }
110
+ .popover.right > .arrow:after {
111
+ bottom: -10px;
112
+ left: 1px;
113
+ content: " ";
114
+ border-right-color: #fff;
115
+ border-left-width: 0;
116
+ }
117
+ .popover.bottom > .arrow {
118
+ top: -11px;
119
+ left: 50%;
120
+ margin-left: -11px;
121
+ border-top-width: 0;
122
+ border-bottom-color: #999;
123
+ border-bottom-color: rgba(0, 0, 0, .25);
124
+ }
125
+ .popover.bottom > .arrow:after {
126
+ top: 1px;
127
+ margin-left: -10px;
128
+ content: " ";
129
+ border-top-width: 0;
130
+ border-bottom-color: #fff;
131
+ }
132
+ .popover.left > .arrow {
133
+ top: 50%;
134
+ right: -11px;
135
+ margin-top: -11px;
136
+ border-right-width: 0;
137
+ border-left-color: #999;
138
+ border-left-color: rgba(0, 0, 0, .25);
139
+ }
140
+ .popover.left > .arrow:after {
141
+ right: 1px;
142
+ bottom: -10px;
143
+ content: " ";
144
+ border-right-width: 0;
145
+ border-left-color: #fff;
146
+ }
147
+ .btn {
148
+ cursor: pointer;
149
+ -webkit-user-select: none;
150
+ -moz-user-select: none;
151
+ -ms-user-select: none;
152
+ user-select: none;
153
+ background-image: none;
154
+ border: 1px solid transparent;
155
+
156
+ }
157
+ .btn:focus,
158
+ .btn:active:focus,
159
+ .btn.active:focus {
160
+ outline: thin dotted;
161
+ outline: 5px auto -webkit-focus-ring-color;
162
+ outline-offset: -2px;
163
+ }
164
+ .btn:hover,
165
+ .btn:focus {
166
+ color: #333;
167
+ text-decoration: none;
168
+ }
169
+ .btn:active,
170
+ .btn.active {
171
+ background-image: none;
172
+ outline: 0;
173
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
174
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
175
+ }
176
+ .btn-default {
177
+ color: #333;
178
+ background-color: #fff;
179
+ border-color: #ccc;
180
+ }
181
+ .btn-default:hover,
182
+ .btn-default:focus,
183
+ .btn-default:active,
184
+ .btn-default.active,
185
+ .open .dropdown-toggle.btn-default {
186
+ color: #333;
187
+ background-color: #ebebeb;
188
+ border-color: #adadad;
189
+ }
190
+ .btn-default:active,
191
+ .btn-default.active,
192
+ .open .dropdown-toggle.btn-default {
193
+ background-image: none;
194
+ }
195
+ .btn-block {
196
+ display: block;
197
+ width: 100%;
198
+ }
199
+ .text-primary {
200
+ color: #428bca;
201
+ }
202
+
203
+ /*!
204
+ * ClockPicker v{package.version} for Bootstrap (http://weareoutman.github.io/clockpicker/)
205
+ * Copyright 2014 Wang Shenwei.
206
+ * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/gh-pages/LICENSE)
207
+ */
208
+
209
+ .clockpicker .input-group-addon {
210
+ cursor: pointer;
211
+ }
212
+ .clockpicker-moving {
213
+ cursor: move;
214
+ }
215
+ .clockpicker-align-left.popover > .arrow {
216
+ left: 25px;
217
+ }
218
+ .clockpicker-align-top.popover > .arrow {
219
+ top: 17px;
220
+ }
221
+ .clockpicker-align-right.popover > .arrow {
222
+ left: auto;
223
+ right: 25px;
224
+ }
225
+ .clockpicker-align-bottom.popover > .arrow {
226
+ top: auto;
227
+ bottom: 6px;
228
+ }
229
+ .clockpicker-popover .popover-title {
230
+ background-color: #fff;
231
+ color: #999;
232
+ font-size: 24px;
233
+ font-weight: bold;
234
+ line-height: 30px;
235
+ text-align: center;
236
+ }
237
+ .clockpicker-popover .popover-title span {
238
+ cursor: pointer;
239
+ }
240
+ .clockpicker-popover .popover-content {
241
+ background-color: #f8f8f8;
242
+ padding: 12px;
243
+ }
244
+ .popover-content:last-child {
245
+ border-bottom-left-radius: 5px;
246
+ border-bottom-right-radius: 5px;
247
+ }
248
+ .clockpicker-plate {
249
+ background-color: #fff;
250
+ border: 1px solid #ccc;
251
+ border-radius: 50%;
252
+ width: 200px;
253
+ height: 200px;
254
+ overflow: visible;
255
+ position: relative;
256
+ /* Disable text selection highlighting. Thanks to Hermanya */
257
+ -webkit-touch-callout: none;
258
+ -webkit-user-select: none;
259
+ -khtml-user-select: none;
260
+ -moz-user-select: none;
261
+ -ms-user-select: none;
262
+ user-select: none;
263
+ }
264
+ .clockpicker-canvas,
265
+ .clockpicker-dial {
266
+ width: 200px;
267
+ height: 200px;
268
+ position: absolute;
269
+ left: -1px;
270
+ top: -1px;
271
+ }
272
+ .clockpicker-minutes {
273
+ visibility: hidden;
274
+ }
275
+ .clockpicker-tick {
276
+ border-radius: 50%;
277
+ color: #666;
278
+ line-height: 26px;
279
+ text-align: center;
280
+ width: 26px;
281
+ height: 26px;
282
+ position: absolute;
283
+ cursor: pointer;
284
+ }
285
+ .clockpicker-tick.active,
286
+ .clockpicker-tick:hover {
287
+ background-color: rgb(192, 229, 247);
288
+ background-color: rgba(0, 149, 221, .25);
289
+ }
290
+ .clockpicker-button {
291
+ background-image: none;
292
+ background-color: #fff;
293
+ border-width: 1px 0 0;
294
+ border-top-left-radius: 0;
295
+ border-top-right-radius: 0;
296
+ margin: 0;
297
+ padding: 10px 0;
298
+ }
299
+ .clockpicker-button:hover {
300
+ background-image: none;
301
+ background-color: #ebebeb;
302
+ }
303
+ .clockpicker-button:focus {
304
+ outline: none!important;
305
+ }
306
+ .clockpicker-dial {
307
+ -webkit-transition: -webkit-transform 350ms, opacity 350ms;
308
+ -moz-transition: -moz-transform 350ms, opacity 350ms;
309
+ -ms-transition: -ms-transform 350ms, opacity 350ms;
310
+ -o-transition: -o-transform 350ms, opacity 350ms;
311
+ transition: transform 350ms, opacity 350ms;
312
+ }
313
+ .clockpicker-dial-out {
314
+ opacity: 0;
315
+ }
316
+ .clockpicker-hours.clockpicker-dial-out {
317
+ -webkit-transform: scale(1.2, 1.2);
318
+ -moz-transform: scale(1.2, 1.2);
319
+ -ms-transform: scale(1.2, 1.2);
320
+ -o-transform: scale(1.2, 1.2);
321
+ transform: scale(1.2, 1.2);
322
+ }
323
+ .clockpicker-minutes.clockpicker-dial-out {
324
+ -webkit-transform: scale(.8, .8);
325
+ -moz-transform: scale(.8, .8);
326
+ -ms-transform: scale(.8, .8);
327
+ -o-transform: scale(.8, .8);
328
+ transform: scale(.8, .8);
329
+ }
330
+ .clockpicker-canvas {
331
+ -webkit-transition: opacity 175ms;
332
+ -moz-transition: opacity 175ms;
333
+ -ms-transition: opacity 175ms;
334
+ -o-transition: opacity 175ms;
335
+ transition: opacity 175ms;
336
+ }
337
+ .clockpicker-canvas-out {
338
+ opacity: 0.25;
339
+ }
340
+ .clockpicker-canvas-bearing,
341
+ .clockpicker-canvas-fg {
342
+ stroke: none;
343
+ fill: rgb(0, 149, 221);
344
+ }
345
+ .clockpicker-canvas-bg {
346
+ stroke: none;
347
+ fill: rgb(192, 229, 247);
348
+ }
349
+ .clockpicker-canvas-bg-trans {
350
+ fill: rgba(0, 149, 221, .25);
351
+ }
352
+ .clockpicker-canvas line {
353
+ stroke: rgb(0, 149, 221);
354
+ stroke-width: 1;
355
+ stroke-linecap: round;
356
+ /*shape-rendering: crispEdges;*/
357
+ }
358
+ .clockpicker-button.am-button {
359
+ margin: 1px;
360
+ padding: 5px;
361
+ border: 1px solid rgba(0, 0, 0, .2);
362
+ border-radius: 4px;
363
+
364
+ }
365
+ .clockpicker-button.pm-button {
366
+ margin: 1px 1px 1px 136px;
367
+ padding: 5px;
368
+ border: 1px solid rgba(0, 0, 0, .2);
369
+ border-radius: 4px;
370
+ }