openehr-rails 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +13 -0
- data/Rakefile +1 -16
- data/lib/generators/openehr/assets/assets_generator.rb +28 -0
- data/lib/generators/openehr/assets/templates/javascript.js +1 -0
- data/lib/generators/openehr/assets/templates/stylesheet.css.scss +3 -0
- data/lib/generators/openehr/controller/controller_generator.rb +10 -9
- data/lib/generators/openehr/controller/templates/controller.rb +71 -10
- data/lib/generators/openehr/helper/helper_generator.rb +17 -0
- data/lib/generators/openehr/helper/templates/helper.rb +2 -0
- data/lib/generators/openehr/i18n/i18n_generator.rb +29 -33
- data/lib/generators/openehr/i18n/templates/i18n.rb +3 -3
- data/lib/generators/openehr/i18n/templates/language.yml +8 -3
- data/lib/generators/openehr/install/install_generator.rb +6 -9
- data/lib/generators/openehr/migration/migration_generator.rb +24 -9
- data/lib/generators/openehr/migration/templates/archetypes.rb +10 -0
- data/lib/generators/openehr/migration/templates/rms.rb +16 -0
- data/lib/generators/openehr/model/model_generator.rb +108 -7
- data/lib/generators/openehr/model/templates/activemodel.rb +71 -0
- data/lib/generators/openehr/model/templates/archetype.rb +3 -0
- data/lib/generators/openehr/model/templates/rm.rb +3 -0
- data/lib/generators/openehr/scaffold/scaffold_generator.rb +182 -109
- data/lib/generators/openehr/scaffold/templates/_form.html.erb +1 -1
- data/lib/generators/openehr/scaffold/templates/application.html.erb +14 -0
- data/lib/generators/openehr/scaffold/templates/application_controller.rb +1 -0
- data/lib/generators/openehr/scaffold/templates/edit.html.erb +3 -3
- data/lib/generators/openehr/scaffold/templates/index.html.erb +4 -4
- data/lib/generators/openehr/scaffold/templates/inflections.rb +3 -0
- data/lib/generators/openehr/scaffold/templates/layout.css.scss +4 -0
- data/lib/generators/openehr/scaffold/templates/new.html.erb +5 -0
- data/lib/generators/openehr/scaffold/templates/show.html.erb +2 -2
- data/lib/generators/openehr.rb +67 -49
- data/lib/openehr-rails/version.rb +1 -1
- data/lib/openehr-rails.rb +1 -1
- data/openehr-rails.gemspec +1 -5
- data/spec/generator_helper.rb +3 -0
- data/spec/generators/openehr/archetyped_base_spec.rb +53 -35
- data/spec/generators/openehr/assets/assets_generator_spec.rb +37 -0
- data/spec/generators/openehr/controller/controller_generator_spec.rb +20 -4
- data/spec/generators/openehr/helper/helper_generator_spec.rb +23 -0
- data/spec/generators/openehr/i18n/i18n_generator_spec.rb +49 -50
- data/spec/generators/openehr/install/install_generator_spec.rb +3 -3
- data/spec/generators/openehr/migration/migration_generator_spec.rb +18 -7
- data/spec/generators/openehr/model/model_generator_spec.rb +54 -0
- data/spec/generators/openehr/scaffold/scaffold_generator_spec.rb +121 -48
- data/spec/spec_helper.rb +6 -6
- metadata +26 -68
- data/Guardfile +0 -15
- data/db/seeds.rb +0 -7
- data/lib/assets/.gitkeep +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cfed038e81c640ca3a4dfa779acc3dab8186419d
|
4
|
+
data.tar.gz: 0bc27386d4b70565c240c87d12bbe69b85465680
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5cbdeb723527d686a2988738cc89b51871d2dac17b57b620bce3816837bb72e72c69ab62a6a78485f85cbf1b323f7b7725d44842743a321ed737ed1cb0353cfc
|
7
|
+
data.tar.gz: 53a15cc57f55b62ea9def0ced5db4d218d70e0c24842edc84310ab15fbbc0641cbd797206b8915292e60e61a8ec6cd3b800d668019520808e67db396526bdf14
|
data/README.rdoc
CHANGED
@@ -1,8 +1,21 @@
|
|
1
|
+
{<img src="https://travis-ci.org/skoba/openehr-ruby.png?branch=master" alt="Build Status" />}[https://travis-ci.org/skoba/openehr-ruby]
|
1
2
|
== Synopsys
|
2
3
|
|
3
4
|
This is a support library for openEHR on Rails implementation and
|
4
5
|
still working exeperimental codes.
|
5
6
|
|
7
|
+
== Requirements
|
8
|
+
|
9
|
+
* Supports Ruby 1.9.3, 2.0.0 or equivalents.
|
10
|
+
* Developed with CRuby 2.0.0, 1.9.3 on FreeBSD and Linux.
|
11
|
+
* Ruby 1.8 or earlier are no longer supported.
|
12
|
+
|
13
|
+
== Usage
|
14
|
+
|
15
|
+
This library provide scaffold generator on archetype clinical domain
|
16
|
+
concepts.
|
17
|
+
|
18
|
+
|
6
19
|
== License
|
7
20
|
This product is under Apache 2.0 license
|
8
21
|
|
data/Rakefile
CHANGED
@@ -7,27 +7,12 @@ require 'rubygems'
|
|
7
7
|
require 'bundler'
|
8
8
|
require "bundler/gem_tasks"
|
9
9
|
require 'rake'
|
10
|
-
|
11
10
|
require 'rspec/core'
|
12
11
|
require 'rspec/core/rake_task'
|
12
|
+
|
13
13
|
RSpec::Core::RakeTask.new(:spec) do |spec|
|
14
14
|
spec.pattern = FileList['spec/**/*_spec.rb']
|
15
15
|
end
|
16
16
|
|
17
|
-
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
18
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
19
|
-
spec.rcov = true
|
20
|
-
end
|
21
|
-
|
22
17
|
task :default => :spec
|
23
18
|
|
24
|
-
require 'rdoc/task'
|
25
|
-
Rake::RDocTask.new do |rdoc|
|
26
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
27
|
-
|
28
|
-
rdoc.rdoc_dir = 'rdoc'
|
29
|
-
rdoc.title = "openehr-rails #{version}"
|
30
|
-
rdoc.rdoc_files.include('README*')
|
31
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
32
|
-
end
|
33
|
-
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'generators/openehr'
|
2
|
+
require 'rails/generators/rails/scaffold/scaffold_generator'
|
3
|
+
|
4
|
+
module Openehr
|
5
|
+
module Generators
|
6
|
+
class AssetsGenerator < ArchetypedBase
|
7
|
+
source_root File.expand_path("../templates", __FILE__)
|
8
|
+
|
9
|
+
def create_assets_directory
|
10
|
+
empty_directory 'app/assets'
|
11
|
+
end
|
12
|
+
|
13
|
+
def copy_css
|
14
|
+
dir = ::Rails::Generators::ScaffoldGenerator.source_root
|
15
|
+
cssfile = File.join(dir, 'scaffold.css')
|
16
|
+
create_file 'app/assets/stylesheets/scaffold.css', File.read(cssfile)
|
17
|
+
end
|
18
|
+
|
19
|
+
def create_scss
|
20
|
+
template 'stylesheet.css.scss', File.join('app/assets/stylesheets', "#{model_name}.css.scss")
|
21
|
+
end
|
22
|
+
|
23
|
+
def create_coffeescript
|
24
|
+
template 'javascript.js', File.join('app/assets/javascripts', "#{model_name}.js.coffee")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
# Javascript template
|
@@ -1,15 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
require 'generators/openehr'
|
2
|
+
|
3
|
+
module Openehr
|
4
|
+
module Generators
|
5
|
+
class ControllerGenerator < ArchetypedBase
|
6
|
+
source_root File.expand_path("../templates", __FILE__)
|
7
|
+
|
8
|
+
desc <<DESC
|
7
9
|
generate controler from template and archetype
|
8
10
|
DESC
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
end
|
12
|
+
def create_controller
|
13
|
+
template 'controller.rb', File.join('app/controllers', "#{controller_name}_controller.rb")
|
13
14
|
end
|
14
15
|
end
|
15
16
|
end
|
@@ -1,13 +1,74 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
class <%= controller_class_name %> < ApplicationController
|
2
|
+
before_action :set_<%= controller_name %>, only: [:show, :edit, :update, :destroy]
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
def <%= action %>
|
4
|
+
# GET /<%= controller_class_name %>
|
5
|
+
# GET /<%= controller_class_name %>.json
|
6
|
+
def index
|
7
|
+
@<%= model_name %> = <%= model_class_name %>.all
|
9
8
|
end
|
10
|
-
|
11
|
-
|
9
|
+
|
10
|
+
# GET /<%= controller_name %>/1
|
11
|
+
# GET /<%= controller_name %>/1.json
|
12
|
+
def show
|
13
|
+
end
|
14
|
+
|
15
|
+
# GET /<%= controller_name %>/new
|
16
|
+
def new
|
17
|
+
@<%= model_name %> = <%= model_class_name %>.new
|
18
|
+
end
|
19
|
+
|
20
|
+
# GET /<%= controller_name %>/1/edit
|
21
|
+
def edit
|
22
|
+
end
|
23
|
+
|
24
|
+
# POST /<%= controller_name %>
|
25
|
+
# POST /<%= controller_name %>.json
|
26
|
+
def create
|
27
|
+
@<%= model_name %> = <%= model_class_name %>.new(<%= model_name %>_params)
|
28
|
+
|
29
|
+
respond_to do |format|
|
30
|
+
if @<%= model_name %>.save
|
31
|
+
format.html { redirect_to @<%= controller_name %>, notice: '<%= archetype_name %> was successfully created.' }
|
32
|
+
format.json { render action: 'show', status: :created, location: @<%= controller_name %> }
|
33
|
+
else
|
34
|
+
format.html { render action: 'new' }
|
35
|
+
format.json { render json: @<%= controller_name %>, status: :unprocessable_entity }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# PATCH/PUT /<%= controller_name %>/1
|
41
|
+
# PATCH/PUT /<%= controller_name %>/1.json
|
42
|
+
def update
|
43
|
+
respond_to do |format|
|
44
|
+
if @<%= model_name %>.update(<%= model_name %>_params)
|
45
|
+
format.html { redirect_to @<%= controller_name %>, notice: '<%= archetype_name %> updated.' }
|
46
|
+
format.json { head :no_content }
|
47
|
+
else
|
48
|
+
format.html { render action: 'edit' }
|
49
|
+
format.json { render json: @<%= model_name %>.errors, status: :unprocessable_entity }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# DELETE /<%= controller_name %>/1
|
55
|
+
# DELETE /<%= controller_name %>/1.json
|
56
|
+
def destroy
|
57
|
+
@<%= model_name %>.destroy
|
58
|
+
respond_to do |format|
|
59
|
+
format.html { redirect_to <%= controller_name %>_index_url }
|
60
|
+
format.json { head :no_content }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
# Use callbacks to share common setup or constraints between actions.
|
66
|
+
def set_<%= controller_name %>
|
67
|
+
@<%= model_name %> = <%= model_class_name %>.find(params[:id])
|
68
|
+
end
|
69
|
+
|
70
|
+
# Never trust parameters from the scary internet, only allow the white list through.
|
71
|
+
def <%= model_name %>_params
|
72
|
+
params[:<%= model_name %>]
|
73
|
+
end
|
12
74
|
end
|
13
|
-
<% end -%>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'generators/openehr'
|
2
|
+
|
3
|
+
module Openehr
|
4
|
+
module Generators
|
5
|
+
class HelperGenerator < ArchetypedBase
|
6
|
+
source_root File.expand_path("../templates", __FILE__)
|
7
|
+
|
8
|
+
def create_helper_directory
|
9
|
+
empty_directory 'app/helpers'
|
10
|
+
end
|
11
|
+
|
12
|
+
def copy_helper_file
|
13
|
+
template 'helper.rb', File.join('app/helpers', "#{model_name}_helper.rb")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -5,48 +5,44 @@ require 'openehr/parser'
|
|
5
5
|
require 'locale/info'
|
6
6
|
require 'generators/openehr'
|
7
7
|
|
8
|
-
module
|
9
|
-
module
|
10
|
-
|
11
|
-
|
12
|
-
source_root File.expand_path '../templates', __FILE__
|
8
|
+
module Openehr
|
9
|
+
module Generators
|
10
|
+
class I18nGenerator < ArchetypedBase
|
11
|
+
source_root File.expand_path '../templates', __FILE__
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
template 'i18n.rb', 'config/initializers/i18n.rb'
|
18
|
-
end
|
13
|
+
def create_i18n_file
|
14
|
+
template 'i18n.rb', 'config/initializers/i18n.rb'
|
15
|
+
end
|
19
16
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
{atcode: atcode, item: term.items['text']}
|
26
|
-
end
|
27
|
-
template 'language.yml', "config/locales/#{@language_code}.yml"
|
17
|
+
def create_yaml_files
|
18
|
+
archetype.ontology.term_definitions.each do |code, terms|
|
19
|
+
@language_code = code
|
20
|
+
@terms = terms.map do |atcode, term|
|
21
|
+
{atcode: atcode, item: term.items['text']}
|
28
22
|
end
|
23
|
+
template 'language.yml', "config/locales/#{@language_code}.yml"
|
29
24
|
end
|
25
|
+
end
|
30
26
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
27
|
+
protected
|
28
|
+
def original_language
|
29
|
+
{ code: original_language_code,
|
30
|
+
text: language_name(original_language_code) }
|
31
|
+
end
|
36
32
|
|
37
|
-
|
38
|
-
|
39
|
-
|
33
|
+
def original_language_code
|
34
|
+
archetype.original_language.code_string
|
35
|
+
end
|
40
36
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
end
|
37
|
+
def translations
|
38
|
+
archetype.translations.each_key.map do |code|
|
39
|
+
{ code: code, text: language_name(code) }
|
45
40
|
end
|
41
|
+
end
|
46
42
|
|
47
|
-
|
48
|
-
|
49
|
-
|
43
|
+
def language_name(code)
|
44
|
+
lang_name = Locale::Info.get_language(code)
|
45
|
+
lang_name ? lang_name.name : code
|
50
46
|
end
|
51
47
|
end
|
52
48
|
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
I18n.default_locale = :<%=
|
1
|
+
I18n.default_locale = :<%= original_language[:code] %>
|
2
2
|
|
3
3
|
LANGUAGES = [
|
4
|
-
['<%=
|
5
|
-
<%
|
4
|
+
['<%= original_language[:text] %>', '<%= original_language[:code] %>'],
|
5
|
+
<% translations.each do |t|%> ['<%= t[:text] %>', '<%= t[:code] %>'],
|
6
6
|
<% end %>]
|
@@ -1,10 +1,15 @@
|
|
1
1
|
<%= @language_code %>:
|
2
|
+
date: # month name and date format should be customized as you need.
|
3
|
+
month_names: [~, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
4
|
+
order: [year, month, day]
|
2
5
|
layouts:
|
3
6
|
application:
|
4
|
-
<%=
|
7
|
+
<%= controller_name %>:
|
5
8
|
index: &ontology
|
6
|
-
<% @terms.each do |term|
|
7
|
-
|
9
|
+
<% @terms.each do |term| -%>
|
10
|
+
<%= term[:atcode] %>: "<%= term[:item] %>"
|
11
|
+
<% end -%>
|
12
|
+
new: *ontology
|
8
13
|
form: *ontology
|
9
14
|
show: *ontology
|
10
15
|
edit: *ontology
|
@@ -1,16 +1,13 @@
|
|
1
|
-
module
|
2
|
-
module
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
desc <<DESC
|
1
|
+
module Openehr
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < ::Rails::Generators::Base
|
4
|
+
desc <<DESC
|
7
5
|
Description:
|
8
6
|
setup openEHR environment with archetype directory.
|
9
7
|
DESC
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
9
|
+
def create_archetype_directory
|
10
|
+
empty_directory 'app/archetypes'
|
14
11
|
end
|
15
12
|
end
|
16
13
|
end
|
@@ -1,16 +1,31 @@
|
|
1
1
|
require 'generators/openehr'
|
2
2
|
require 'rails/generators/active_record'
|
3
|
+
require 'rails/generators/migration'
|
4
|
+
require 'rails/generators/base'
|
3
5
|
|
4
|
-
module
|
5
|
-
module
|
6
|
-
|
7
|
-
|
8
|
-
argument :attributes
|
9
|
-
source_root File.expand_path("./templates", __FILE__)
|
6
|
+
module Openehr
|
7
|
+
module Generators
|
8
|
+
class MigrationGenerator < ::Rails::Generators::Base
|
9
|
+
include ::Rails::Generators::Migration
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
source_root File.expand_path("../templates", __FILE__)
|
12
|
+
|
13
|
+
def make_directory
|
14
|
+
empty_directory 'db/migrate'
|
15
|
+
end
|
16
|
+
|
17
|
+
def copy_archetype_migration
|
18
|
+
migration_template 'archetypes.rb', 'db/migrate/create_archetypes.rb'
|
19
|
+
end
|
20
|
+
|
21
|
+
def copy_rm_migration
|
22
|
+
migration_template 'rms.rb', 'db/migrate/create_rms.rb'
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
def self.next_migration_number(dirname)
|
27
|
+
next_migration_number = current_migration_number(dirname) + 1
|
28
|
+
ActiveRecord::Migration.next_migration_number(next_migration_number)
|
14
29
|
end
|
15
30
|
end
|
16
31
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class CreateRms < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :rms do |t|
|
4
|
+
t.string :node_id
|
5
|
+
t.string :path
|
6
|
+
t.references :archetype, index: true
|
7
|
+
t.string :text_value
|
8
|
+
t.float :num_value
|
9
|
+
t.date :date_value
|
10
|
+
t.time :time_value
|
11
|
+
t.boolean :bool_value
|
12
|
+
|
13
|
+
t.timestamps
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1,16 +1,117 @@
|
|
1
1
|
require 'generators/openehr'
|
2
2
|
|
3
|
-
module
|
4
|
-
module
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
module Openehr
|
4
|
+
module Generators
|
5
|
+
class ModelGenerator < ArchetypedBase
|
6
|
+
source_root File.expand_path("../templates", __FILE__)
|
7
|
+
desc "generate archetype model and migragion file"
|
8
8
|
|
9
|
-
|
9
|
+
def create_empty_directory
|
10
|
+
empty_directory File.join('app/models')
|
11
|
+
end
|
12
|
+
|
13
|
+
def generate_rm
|
14
|
+
template 'rm.rb', File.join('app/models', 'rm.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
def generate_archetype
|
18
|
+
template 'archetype.rb', File.join('app/models', 'archetype.rb')
|
19
|
+
end
|
20
|
+
|
21
|
+
def generate_archtype_based_active_model
|
22
|
+
template 'activemodel.rb', File.join('app/models', "#{model_name}.rb")
|
23
|
+
end
|
10
24
|
|
11
|
-
|
25
|
+
protected
|
26
|
+
def atcodes(cobj)
|
27
|
+
case cobj.rm_type_name
|
28
|
+
when 'ELEMENT'
|
29
|
+
add_atcode_methods cobj
|
30
|
+
when 'EVENT'
|
31
|
+
add_event cobj
|
32
|
+
when 'INTERVAL_EVENT'
|
33
|
+
add_event cobj
|
34
|
+
else
|
35
|
+
add_data_component cobj
|
12
36
|
end
|
13
37
|
end
|
38
|
+
|
39
|
+
def add_data_component(cobj)
|
40
|
+
html = ''
|
41
|
+
if cobj.respond_to? :attributes
|
42
|
+
html += cobj.attributes.inject('') do |form, attr|
|
43
|
+
if attr.respond_to? :children
|
44
|
+
form += attr.children.inject('') do |h, child|
|
45
|
+
child_atcode = atcodes child
|
46
|
+
unless child_atcode.nil?
|
47
|
+
h += child_atcode
|
48
|
+
end
|
49
|
+
h
|
50
|
+
end
|
51
|
+
end
|
52
|
+
form
|
53
|
+
end
|
54
|
+
end
|
55
|
+
html
|
56
|
+
end
|
57
|
+
|
58
|
+
def add_event(cobj)
|
59
|
+
add_interval_event(cobj) + add_data_component(cobj)
|
60
|
+
end
|
61
|
+
|
62
|
+
def add_interval_event(cobj)
|
63
|
+
atcode = cobj.node_id
|
64
|
+
path = cobj.path+ "/value"
|
65
|
+
atval = "#{atcode}model.text_value"
|
66
|
+
atform(atcode, path, atval, 'text_value')
|
67
|
+
end
|
68
|
+
|
69
|
+
def add_atcode_methods(cobj)
|
70
|
+
atcode = cobj.node_id
|
71
|
+
val = cobj.attributes.select {|attr| attr.rm_attribute_name == 'value'}[0]
|
72
|
+
path = val.path
|
73
|
+
type = case val.children[0].rm_type_name
|
74
|
+
when 'DvQuantity', 'DV_QUANTITY'
|
75
|
+
'num_value'
|
76
|
+
when 'DvText', 'DV_TEXT'
|
77
|
+
'text_value'
|
78
|
+
when 'DvCodedText', "DV_CODED_TEXT"
|
79
|
+
'text_value'
|
80
|
+
when 'DvDate', 'DV_DATE'
|
81
|
+
'date_value'
|
82
|
+
when 'DvTime', 'DvTime'
|
83
|
+
'time_value'
|
84
|
+
when 'DvDateTime', 'DvDateTime'
|
85
|
+
'datetime_value'
|
86
|
+
else
|
87
|
+
'text_value'
|
88
|
+
end
|
89
|
+
if val.children[0].rm_type_name == 'DV_CODED_TEXT' ||
|
90
|
+
val.children[0].rm_type_name == 'DvCodedText'
|
91
|
+
atval = "translate(#{atcode}model.#{type})"
|
92
|
+
else
|
93
|
+
atval = "#{atcode}model.#{type}"
|
94
|
+
end
|
95
|
+
atform(atcode, path, atval, type)
|
96
|
+
end
|
97
|
+
|
98
|
+
def atform(atcode, path, atval, type)
|
99
|
+
return <<ATFORM
|
100
|
+
def #{atcode}model
|
101
|
+
@#{atcode} ||= confat('#{atcode}', '#{path}')
|
102
|
+
end
|
103
|
+
|
104
|
+
def #{atcode}
|
105
|
+
#{atval}
|
106
|
+
end
|
107
|
+
|
108
|
+
def #{atcode}=(#{atcode})
|
109
|
+
#{atcode}model.#{type} = #{atcode}
|
110
|
+
end
|
111
|
+
|
112
|
+
ATFORM
|
113
|
+
end
|
14
114
|
end
|
15
115
|
end
|
16
116
|
end
|
117
|
+
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
class <%= model_class_name %>
|
3
|
+
include ActiveModel::Model
|
4
|
+
|
5
|
+
def self.create(attributes = {})
|
6
|
+
<%= model_class_name %>.new(attributes)
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.all
|
10
|
+
Archetype.where(archetypeid: '<%= archetype_name %>').to_a.map do |archetype|
|
11
|
+
<%= model_class_name %>.new(archetype: archetype)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.find(id)
|
16
|
+
<%= model_class_name %>.new(archetype: Archetype.find(id))
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.build(params)
|
20
|
+
<%= model_class_name %>.new(params)
|
21
|
+
end
|
22
|
+
|
23
|
+
def save
|
24
|
+
archetype.rms.inject(archetype.save, :&) {|rm| rm.save}
|
25
|
+
end
|
26
|
+
|
27
|
+
def persisted?
|
28
|
+
archetype.persisted?
|
29
|
+
end
|
30
|
+
|
31
|
+
def destroy
|
32
|
+
archetype.destroy
|
33
|
+
end
|
34
|
+
|
35
|
+
def update(attributes)
|
36
|
+
self.attributes=attributes
|
37
|
+
end
|
38
|
+
|
39
|
+
def attributes=(attributes)
|
40
|
+
attributes.each do |k, v|
|
41
|
+
send("#{k}=", v )
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def id
|
46
|
+
archetype.id
|
47
|
+
end
|
48
|
+
|
49
|
+
def id=(id)
|
50
|
+
self.archetype = Archetype.find(id)
|
51
|
+
end
|
52
|
+
|
53
|
+
def archetype
|
54
|
+
@archetype ||= Archetype.new(archetypeid: '<%= archetype_name %>', uid: SecureRandom.uuid)
|
55
|
+
end
|
56
|
+
|
57
|
+
def archetype=(archetype)
|
58
|
+
@archetype = archetype
|
59
|
+
end
|
60
|
+
|
61
|
+
<%= add_data_component(archetype.definition) %>
|
62
|
+
private
|
63
|
+
def confat(node_id, path)
|
64
|
+
archetype.rms.find_by(:node_id => node_id) ||
|
65
|
+
archetype.rms.build(:node_id => node_id, :path => path)
|
66
|
+
end
|
67
|
+
|
68
|
+
def translate(term)
|
69
|
+
I18n.translate("<%= controller_name %>.index.#{term}")
|
70
|
+
end
|
71
|
+
end
|