openehr-rails 0.0.2 → 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.
- 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
|