acts_as_tree_diagram 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: cce2312b24107bfcd148e593e29df7354db35c073772b08299ebd71516c2987d
4
+ data.tar.gz: 47ec6e6b106ece44ac28df6603ca5563dd04fedc85459be363fa1cf1d54bc42c
5
+ SHA512:
6
+ metadata.gz: b58bbce7bf280a0be89b6254a5c3cbd53733c894371887c493d130b787bae1c21184a6889400ce7a19bc4be60eda53beceafc28613c7ad1045ff0b2209d4e912
7
+ data.tar.gz: ab326617d6fc311ecbfc69c1765ec1bd4eac79b651fb001d5dfee63dbfa7b97889b471650d1d67d8a0884a2771f437f8eec99682140c3097bf9222dd7550fb14
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2022 smapira
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,65 @@
1
+ # ActsAsTreeDiagram
2
+ ActsAsTreeDiagram extends ActsAsTree to add simple function for draw tree diagram with html.
3
+
4
+ ## Usage
5
+
6
+ 1. Append the following line to your `app/assets/application.scss`:
7
+ ```scss
8
+ @import 'acts_as_tree_diagram'
9
+ ```
10
+ 2. And append the line to your model file like below:
11
+ ```ruby
12
+ class Animal < ApplicationRecord
13
+ extend ActsAsTreeDiagram::ViewDiagram
14
+ acts_as_tree order: 'name'
15
+ end
16
+ ```
17
+ 3. Then append the line to your view file like below:
18
+ ```html
19
+ <div id="act_as_tree_diagram">
20
+ <ul class="tree">
21
+ <code>
22
+ ルート
23
+ </code>
24
+ <ul>
25
+ <li>
26
+ <code>
27
+ <%= link_to Animal.find(1).name, animals_path(Animal.find(1)) %>
28
+ </code>
29
+ <ul>
30
+ <%= Animal.draw_diagram(where: { id: 1 }, path: animals_path).html_safe %>
31
+ </ul>
32
+ </li>
33
+ </ul>
34
+ </ul>
35
+ </div>
36
+ ```
37
+
38
+ ## Installation
39
+ Add this line to your application's Gemfile:
40
+
41
+ ```ruby
42
+ gem "acts_as_tree_diagram"
43
+ ```
44
+
45
+ And then execute:
46
+ ```bash
47
+ $ bundle
48
+ ```
49
+
50
+ Or install it yourself as:
51
+ ```bash
52
+ $ gem install acts_as_tree_diagram
53
+ ```
54
+
55
+ ## Stuffs
56
+
57
+ Heavy depend on [ActAsTree](https://github.com/amerine/acts_as_tree) and [Pretty Clean Tree Diagram In Pure CSS &#124; CSS Script](https://www.cssscript.com/clean-tree-diagram/). Thanks much!
58
+
59
+ ## Contributing
60
+ Contribution directions go here.
61
+
62
+ ## License
63
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
64
+
65
+
data/Rakefile ADDED
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/setup"
4
+
5
+ require "bundler/gem_tasks"
@@ -0,0 +1,77 @@
1
+ #act_as_tree_diagram {
2
+
3
+ /* It's supposed to look like a tree diagram */
4
+ .tree, .tree ul, .tree li {
5
+ list-style: none;
6
+ margin: 0;
7
+ padding: 0;
8
+ position: relative;
9
+ }
10
+
11
+ .tree {
12
+ margin: 0 0 1em;
13
+ text-align: center;
14
+ }
15
+ .tree, .tree ul {
16
+ display: table;
17
+ }
18
+ .tree ul {
19
+ width: 100%;
20
+ }
21
+ .tree li {
22
+ display: table-cell;
23
+ padding: .5em 0;
24
+ vertical-align: top;
25
+ }
26
+ /* _________ */
27
+ .tree li:before {
28
+ outline: solid 1px #666;
29
+ content: "";
30
+ left: 0;
31
+ position: absolute;
32
+ right: 0;
33
+ top: 0;
34
+ }
35
+ .tree li:first-child:before {left: 50%;}
36
+ .tree li:last-child:before {right: 50%;}
37
+
38
+ .tree code, .tree span {
39
+ border: solid .1em #666;
40
+ border-radius: .2em;
41
+ display: inline-block;
42
+ margin: 0 .2em .5em;
43
+ padding: .2em .5em;
44
+ position: relative;
45
+ }
46
+ /* If the tree represents DOM structure */
47
+ .tree code {
48
+ font-family: monaco, Consolas, 'Lucida Console', monospace;
49
+ }
50
+
51
+ /* | */
52
+ .tree ul:before,
53
+ .tree code:before,
54
+ .tree span:before {
55
+ outline: solid 1px #666;
56
+ content: "";
57
+ height: .5em;
58
+ left: 50%;
59
+ position: absolute;
60
+ }
61
+ .tree ul:before {
62
+ top: -.5em;
63
+ }
64
+ .tree code:before,
65
+ .tree span:before {
66
+ top: -.55em;
67
+ }
68
+
69
+ /* The root node doesn't connect upwards */
70
+ .tree > li {margin-top: 0;}
71
+ .tree > li:before,
72
+ .tree > li:after,
73
+ .tree > li > code:before,
74
+ .tree > li > span:before {
75
+ outline: none;
76
+ }
77
+ }
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sassc-rails'
4
+
5
+ module ActsAsTreeDiagram
6
+ module Rails
7
+ class Engine < ::Rails::Engine
8
+ initializer 'acts_as_tree_diagram.assets' do |app|
9
+ %w[stylesheets].each do |sub|
10
+ app.config.assets.paths << root.join('assets', sub).to_s
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActsAsTreeDiagram
4
+ VERSION = '0.1.0'
5
+ end
@@ -0,0 +1,32 @@
1
+ require 'acts_as_tree_diagram/version'
2
+ require 'acts_as_tree_diagram/railtie'
3
+
4
+ module ActsAsTreeDiagram
5
+ module ViewDiagram
6
+ def draw_diagram(options = {})
7
+ where = options.fetch :where, {}
8
+ where(where).map { |x| draw_tree(x, options) }.join("\n")
9
+ end
10
+
11
+ private
12
+
13
+ def draw_tree(node, options = {})
14
+ html = ''
15
+ node.children.each do |child|
16
+ path = options.fetch :path, ''
17
+ html = if path.blank?
18
+ html.concat "<li><code>#{child.name}</code>"
19
+ else
20
+ html.concat "<li><code>#{generate_tree_url(path, child, child.name)}</code>"
21
+ end
22
+ html.concat "<ul>#{draw_tree(child, options)}</ul>" if child.children.any?
23
+ html.concat '</li>'
24
+ end
25
+ html.html_safe
26
+ end
27
+
28
+ def generate_tree_url(path, node, label)
29
+ "<a href='#{path}/#{node.id}'>#{label}</a>"
30
+ end
31
+ end
32
+ end
metadata ADDED
@@ -0,0 +1,205 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: acts_as_tree_diagram
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - smapira
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-03-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: acts_as_tree
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: sassc-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: actionpack
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activesupport
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: json
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: puma
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: sprockets-rails
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: sqlite3
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: uglifier
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ description: Draws a tree diagram from a acts_as_tree model
168
+ email:
169
+ - smapira@routeflags.com
170
+ executables: []
171
+ extensions: []
172
+ extra_rdoc_files: []
173
+ files:
174
+ - MIT-LICENSE
175
+ - README.md
176
+ - Rakefile
177
+ - app/assets/stylesheets/acts_as_tree_diagram.scss
178
+ - lib/acts_as_tree_diagram.rb
179
+ - lib/acts_as_tree_diagram/railtie.rb
180
+ - lib/acts_as_tree_diagram/version.rb
181
+ homepage: https://github.com/smapira/acts_as_tree_diagram
182
+ licenses:
183
+ - MIT
184
+ metadata:
185
+ homepage_uri: https://github.com/smapira/acts_as_tree_diagram
186
+ post_install_message:
187
+ rdoc_options: []
188
+ require_paths:
189
+ - lib
190
+ required_ruby_version: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ required_rubygems_version: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ requirements: []
201
+ rubygems_version: 3.3.3
202
+ signing_key:
203
+ specification_version: 4
204
+ summary: Draws a tree diagram from a acts_as_tree model
205
+ test_files: []