diff --git a/app/controllers/admin/coloncancerpredict2s_controller.rb b/app/controllers/admin/coloncancerpredict2s_controller.rb
index 959eb18..e921350 100644
--- a/app/controllers/admin/coloncancerpredict2s_controller.rb
+++ b/app/controllers/admin/coloncancerpredict2s_controller.rb
@@ -330,7 +330,7 @@ class Admin::Coloncancerpredict2sController < OrbitAdminController
Dir.chdir("public") do
@site_locales = Site.last.in_use_locales.each do |locale|
I18n.with_locale(locale) do
- @file_tmp = File.new('colon_cancer_tool_table_tmp_'+locale.to_s+'2.txt', 'w')
+ @file_tmp = File.new(Coloncancerpredictfields2s::ToolTableMap[I18n.locale], 'w')
tmp_table_texts = create_table(locale)
@file_tmp.write(tmp_table_texts)
@file_tmp.close
@@ -654,7 +654,7 @@ class Admin::Coloncancerpredict2sController < OrbitAdminController
Dir.chdir("public") do
@site_locales = Site.last.in_use_locales.each do |locale|
I18n.with_locale(locale) do
- @file_tmp = File.new('colon_cancer_tool_table_tmp_'+locale.to_s+'2.txt', 'w')
+ @file_tmp = File.new(Coloncancerpredictfields2s::ToolTableMap[I18n.locale], 'w')
tmp_table_texts = create_table(locale)
@file_tmp.write(tmp_table_texts)
@file_tmp.close
diff --git a/app/controllers/coloncancerpredict2s_controller.rb b/app/controllers/coloncancerpredict2s_controller.rb
index a1042ba..b7867ee 100644
--- a/app/controllers/coloncancerpredict2s_controller.rb
+++ b/app/controllers/coloncancerpredict2s_controller.rb
@@ -147,20 +147,40 @@ class Coloncancerpredict2sController < ApplicationController
uid = OrbitHelper.params[:uid] rescue ""
tags = OrbitHelper.widget_tags
categories = OrbitHelper.widget_categories || []
- @table_str = File.read('public/colon_cancer_tool_table_tmp_'+I18n.locale.to_s+'2.txt')
+ @table_str = File.read(Coloncancerpredictfields2s::ToolTableMap[I18n.locale])
+ preidct_js_url = '/assets/colon_cancer_predict2.js'
+ if File.exist?(Coloncancerpredictfields2s::JSFileName)
+ js_filename = File.read(Coloncancerpredictfields2s::JSFileName)
+ if js_filename.include?('colon_cancer_predict2.js')
+ asset = Rails.application.assets[js_filename]
+ preidct_js_url = "#{Rails.application.config.assets.prefix}/#{asset.digest_path}"
+ else
+ preidct_js_url = "#{Rails.application.config.assets.prefix}/#{File.basename(js_filename)}"
+ end
+ end
{
"coloncancerpredict2" => [],
- "extras"=>{"table"=> @table_str}
+ "extras"=>{"table"=> @table_str,'preidct_js_url'=>preidct_js_url}
}
end
def widget
uid = OrbitHelper.params[:uid] rescue ""
tags = OrbitHelper.widget_tags
categories = OrbitHelper.widget_categories || []
- @table_str = File.read('public/colon_cancer_tool_table_tmp_'+I18n.locale.to_s+'2.txt')
+ @table_str = File.read(Coloncancerpredictfields2s::ToolTableMap[I18n.locale])
+ preidct_js_url = '/assets/colon_cancer_predict2.js'
+ if File.exist?(Coloncancerpredictfields2s::JSFileName)
+ js_filename = File.read(Coloncancerpredictfields2s::JSFileName)
+ if js_filename.include?('colon_cancer_predict2.js')
+ asset = Rails.application.assets[js_filename]
+ preidct_js_url = "#{Rails.application.config.assets.prefix}/#{asset.digest_path}"
+ else
+ preidct_js_url = "#{Rails.application.config.assets.prefix}/#{File.basename(js_filename)}"
+ end
+ end
{
"coloncancerpredict2" => [],
- "extras"=>{"table"=> @table_str}
+ "extras"=>{"table"=> @table_str,'preidct_js_url'=>preidct_js_url}
}
end
def create_first_field
diff --git a/app/models/coloncancerpredictfields2s.rb b/app/models/coloncancerpredictfields2s.rb
index dfb804a..cf168f7 100644
--- a/app/models/coloncancerpredictfields2s.rb
+++ b/app/models/coloncancerpredictfields2s.rb
@@ -9,6 +9,10 @@ class Coloncancerpredictfields2s
AdvanceFields = ["revert_value","map_values","coloncancer_predict_mapping_file2"]
TherapyFields = ["variable","name","hint","comment_text","choice_fields","lpv_impact","active_choice","disable_condition"]
TherapyOnly = ["lpv_impact","active_choice","disable_condition"]
+ JSFileName = "public/cc2_tool_js_filename.txt".freeze
+ ToolTableMap = I18n.available_locales.map do |locale|
+ [locale, "public/colon_cancer_tool_table_tmp_#{locale}2.txt".freeze]
+ end.to_h
field :title ,type:String ,default:""
field :advance_mode, type: Boolean, default: false
field :form_show , :type=> Hash ,default: {
@@ -218,6 +222,50 @@ class Coloncancerpredictfields2s
self.lpv_calc = get_years_settings_dict
self.generate_eval_formula
end
+ def reload_any_asset(path, type=nil, force_reload=false)
+ env = Rails.application.assets
+ new_env = Sprockets::Environment.new(Rails.root.to_s) do |env|
+ env.version = ::Rails.env
+ tmp_path = "#{Rails.application.config.root}/tmp/cache/assets/#{::Rails.env}"
+ env.cache = ::Sprockets::Cache::FileStore.new(tmp_path)
+ env.context_class.class_eval do
+ include ::Sprockets::Rails::Helper
+ end
+ end
+ new_env.config = env.config
+ stats = env.cached.instance_variable_get(:@stats)
+ new_path = path.sub(/\.erb$/,'')
+ if force_reload || (stats && stats[path]) #Need reload asset
+ if type.nil?
+ ext = File.extname(new_path)
+ env.mime_types.each do |t, h|
+ if h[:extensions].include?(ext)
+ type = t
+ break
+ end
+ end
+ end
+ if type
+ full_path = 'file://'+path+'?type='+type
+ uris = env.cached.instance_variable_get(:@uris)
+ keys = uris.keys.select{|k| k.include?(full_path)}
+ asset = new_env.load(full_path)
+ if keys.count != 0
+ keys.each do |k|
+ uris[k] = asset
+ end
+ end
+ new_path = new_path.sub(/\.[^.]+$/){|ext| '-' + asset.digest + ext}
+ File.binwrite(new_path, asset.to_s)
+ yield new_path if block_given?
+ end
+ end
+ end
+ def reload_js_asset(path, force_reload=false)
+ reload_any_asset(path, 'application/javascript', force_reload) do |new_path|
+ File.open(JSFileName, 'w+'){|f| f.write(new_path)}
+ end
+ end
def generate_eval_formula
eval_hidden_variables = "def eval_hidden_variables(result); #{self.tmp_hidden_variables_for_ruby}; end"
Coloncancerpredict2sController.module_eval(eval_hidden_variables)
@@ -343,7 +391,7 @@ class Coloncancerpredictfields2s
org_str.insert(st, replace_str)
org_str
end
- def auto_write_predict_js
+ def auto_write_predict_js(force_reload=true)
js_codes = generate_jscode
module_app_path = Pathname.new(File.expand_path(__dir__)).dirname.dirname.to_s
save_path = module_app_path + '/app/assets/javascripts/colon_cancer_predict2.js'
@@ -409,6 +457,9 @@ class Coloncancerpredictfields2s
end
if need_write
File.write(save_path,file_texts)
+ reload_js_asset(save_path, force_reload)
+ elsif !(File.exist?(JSFileName))
+ File.open(JSFileName, 'w+'){|f| f.write(save_path)}
end
end
def get_years_settings_dict
diff --git a/modules/coloncancerpredict2/_colon_cancer_predict2_widget.html.erb b/modules/coloncancerpredict2/_colon_cancer_predict2_widget.html.erb
index fcadabc..03382ea 100644
--- a/modules/coloncancerpredict2/_colon_cancer_predict2_widget.html.erb
+++ b/modules/coloncancerpredict2/_colon_cancer_predict2_widget.html.erb
@@ -1,6 +1,6 @@
-
+
{{table}}
<%= stylesheet_link_tag "colon_cancer_predict2", media: "screen" %>
<%= stylesheet_link_tag "bootstrap.min.print", media: "print" %>
diff --git a/modules/coloncancerpredict2/colon_cancer_predict2_index.html.erb b/modules/coloncancerpredict2/colon_cancer_predict2_index.html.erb
index fcadabc..03382ea 100644
--- a/modules/coloncancerpredict2/colon_cancer_predict2_index.html.erb
+++ b/modules/coloncancerpredict2/colon_cancer_predict2_index.html.erb
@@ -1,6 +1,6 @@
-
+
{{table}}
<%= stylesheet_link_tag "colon_cancer_predict2", media: "screen" %>
<%= stylesheet_link_tag "bootstrap.min.print", media: "print" %>