Compare commits

...

2 Commits

Author SHA1 Message Date
邱博亞 e2d5a5f2bd Fix English title. 2024-08-23 21:22:05 +08:00
邱博亞 050b1d14c8 Fix js not reload bug. 2024-08-23 21:22:05 +08:00
5 changed files with 81 additions and 10 deletions

View File

@ -330,7 +330,7 @@ class Admin::Coloncancerpredict1sController < OrbitAdminController
Dir.chdir("public") do Dir.chdir("public") do
@site_locales = Site.last.in_use_locales.each do |locale| @site_locales = Site.last.in_use_locales.each do |locale|
I18n.with_locale(locale) do I18n.with_locale(locale) do
@file_tmp = File.new('colon_cancer_tool_table_tmp_'+locale.to_s+'1.txt', 'w') @file_tmp = File.new(Coloncancerpredictfields1s::ToolTableMap[I18n.locale], 'w')
tmp_table_texts = create_table(locale) tmp_table_texts = create_table(locale)
@file_tmp.write(tmp_table_texts) @file_tmp.write(tmp_table_texts)
@file_tmp.close @file_tmp.close
@ -654,7 +654,7 @@ class Admin::Coloncancerpredict1sController < OrbitAdminController
Dir.chdir("public") do Dir.chdir("public") do
@site_locales = Site.last.in_use_locales.each do |locale| @site_locales = Site.last.in_use_locales.each do |locale|
I18n.with_locale(locale) do I18n.with_locale(locale) do
@file_tmp = File.new('colon_cancer_tool_table_tmp_'+locale.to_s+'1.txt', 'w') @file_tmp = File.new(Coloncancerpredictfields1s::ToolTableMap[I18n.locale], 'w')
tmp_table_texts = create_table(locale) tmp_table_texts = create_table(locale)
@file_tmp.write(tmp_table_texts) @file_tmp.write(tmp_table_texts)
@file_tmp.close @file_tmp.close

View File

@ -147,20 +147,40 @@ class Coloncancerpredict1sController < ApplicationController
uid = OrbitHelper.params[:uid] rescue "" uid = OrbitHelper.params[:uid] rescue ""
tags = OrbitHelper.widget_tags tags = OrbitHelper.widget_tags
categories = OrbitHelper.widget_categories || [] categories = OrbitHelper.widget_categories || []
@table_str = File.read('public/colon_cancer_tool_table_tmp_'+I18n.locale.to_s+'1.txt') @table_str = File.read(Coloncancerpredictfields1s::ToolTableMap[I18n.locale])
preidct_js_url = '/assets/colon_cancer_predict1.js'
if File.exist?(Coloncancerpredictfields1s::JSFileName)
js_filename = File.read(Coloncancerpredictfields1s::JSFileName)
if js_filename.include?('colon_cancer_predict1.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
{ {
"coloncancerpredict1" => [], "coloncancerpredict1" => [],
"extras"=>{"table"=> @table_str} "extras"=>{"table"=> @table_str,'preidct_js_url'=>preidct_js_url}
} }
end end
def widget def widget
uid = OrbitHelper.params[:uid] rescue "" uid = OrbitHelper.params[:uid] rescue ""
tags = OrbitHelper.widget_tags tags = OrbitHelper.widget_tags
categories = OrbitHelper.widget_categories || [] categories = OrbitHelper.widget_categories || []
@table_str = File.read('public/colon_cancer_tool_table_tmp_'+I18n.locale.to_s+'1.txt') @table_str = File.read(Coloncancerpredictfields1s::ToolTableMap[I18n.locale])
preidct_js_url = '/assets/colon_cancer_predict1.js'
if File.exist?(Coloncancerpredictfields1s::JSFileName)
js_filename = File.read(Coloncancerpredictfields1s::JSFileName)
if js_filename.include?('colon_cancer_predict1.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
{ {
"coloncancerpredict1" => [], "coloncancerpredict1" => [],
"extras"=>{"table"=> @table_str} "extras"=>{"table"=> @table_str,'preidct_js_url'=>preidct_js_url}
} }
end end
def create_first_field def create_first_field

View File

@ -9,6 +9,10 @@ class Coloncancerpredictfields1s
AdvanceFields = ["revert_value","map_values","coloncancer_predict_mapping_file1"] AdvanceFields = ["revert_value","map_values","coloncancer_predict_mapping_file1"]
TherapyFields = ["variable","name","hint","comment_text","choice_fields","lpv_impact","active_choice","disable_condition"] TherapyFields = ["variable","name","hint","comment_text","choice_fields","lpv_impact","active_choice","disable_condition"]
TherapyOnly = ["lpv_impact","active_choice","disable_condition"] TherapyOnly = ["lpv_impact","active_choice","disable_condition"]
JSFileName = "public/cc1_tool_js_filename.txt"
ToolTableMap = I18n.available_locales.map do |locale|
[locale, "public/colon_cancer_tool_table_tmp_#{locale}1.txt".freeze]
end.to_h
field :title ,type:String ,default:"" field :title ,type:String ,default:""
field :advance_mode, type: Boolean, default: false field :advance_mode, type: Boolean, default: false
field :form_show , :type=> Hash ,default: { field :form_show , :type=> Hash ,default: {
@ -32,7 +36,7 @@ class Coloncancerpredictfields1s
field :large ,type:Hash ,default:{'font_size'=>"1.25em",'active'=>0} field :large ,type:Hash ,default:{'font_size'=>"1.25em",'active'=>0}
field :head_images_id ,type:Array , default: [] field :head_images_id ,type:Array , default: []
field :title_images_id ,type:Array , default: [] field :title_images_id ,type:Array , default: []
field :title_texts ,type:Hash ,default: {"zh_tw"=>"大腸癌線上預測工具", "en"=>"Asian breast cancer prediction"} field :title_texts ,type:Hash ,default: {"zh_tw"=>"大腸癌線上預測工具", "en"=>"Predict Colon Cancer Tool"}
field :table_above_texts ,type:Hash ,default: {"zh_tw"=>"下表之分析為針對手術後病人根據選定的術後治療分別估計在第1年、3 及5年的存活率。", "en"=>"The analysis is for women who had undergone surgery.The table shows the 1-, 3- and 5-year survival rates,based on the treatment you have selected."} field :table_above_texts ,type:Hash ,default: {"zh_tw"=>"下表之分析為針對手術後病人根據選定的術後治療分別估計在第1年、3 及5年的存活率。", "en"=>"The analysis is for women who had undergone surgery.The table shows the 1-, 3- and 5-year survival rates,based on the treatment you have selected."}
field :text_above_texts ,type:Hash ,default: {"zh_tw"=>"此研究分析來自已接受根除性手術後之婦女所得之結果,根據您所輸入的資訊以及治療方式,在術後<br/>第{{years}}年,", "en"=>"The analysis is for women who had undergone surgery. Base on the information and the treatment you have selected, the predictions of survival status<br/>{{years}}"} field :text_above_texts ,type:Hash ,default: {"zh_tw"=>"此研究分析來自已接受根除性手術後之婦女所得之結果,根據您所輸入的資訊以及治療方式,在術後<br/>第{{years}}年,", "en"=>"The analysis is for women who had undergone surgery. Base on the information and the treatment you have selected, the predictions of survival status<br/>{{years}}"}
field :surgery_only_texts ,type:Hash ,default: {"zh_tw"=>"100 位只接受根除性手術的婦女中,有{{Surgery_only}}位婦女,術後{{surgery_year}}年仍為存活", "en"=>"after surgery are as follows:<br/>{{Surgery_only}} out of 100 women treated with surgery only are alive at {{surgery_year}} years."} field :surgery_only_texts ,type:Hash ,default: {"zh_tw"=>"100 位只接受根除性手術的婦女中,有{{Surgery_only}}位婦女,術後{{surgery_year}}年仍為存活", "en"=>"after surgery are as follows:<br/>{{Surgery_only}} out of 100 women treated with surgery only are alive at {{surgery_year}} years."}
@ -214,6 +218,50 @@ class Coloncancerpredictfields1s
self.lpv_calc = get_years_settings_dict self.lpv_calc = get_years_settings_dict
self.generate_eval_formula self.generate_eval_formula
end 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 def generate_eval_formula
eval_hidden_variables = "def eval_hidden_variables(result); #{self.tmp_hidden_variables_for_ruby}; end" eval_hidden_variables = "def eval_hidden_variables(result); #{self.tmp_hidden_variables_for_ruby}; end"
Coloncancerpredict1sController.module_eval(eval_hidden_variables) Coloncancerpredict1sController.module_eval(eval_hidden_variables)
@ -339,7 +387,7 @@ class Coloncancerpredictfields1s
org_str.insert(st, replace_str) org_str.insert(st, replace_str)
org_str org_str
end end
def auto_write_predict_js def auto_write_predict_js(force_reload=true)
js_codes = generate_jscode js_codes = generate_jscode
module_app_path = Pathname.new(File.expand_path(__dir__)).dirname.dirname.to_s module_app_path = Pathname.new(File.expand_path(__dir__)).dirname.dirname.to_s
save_path = module_app_path + '/app/assets/javascripts/colon_cancer_predict1.js' save_path = module_app_path + '/app/assets/javascripts/colon_cancer_predict1.js'
@ -405,6 +453,9 @@ class Coloncancerpredictfields1s
end end
if need_write if need_write
File.write(save_path,file_texts) 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
end end
def get_years_settings_dict def get_years_settings_dict

View File

@ -1,6 +1,6 @@
<script type="text/javascript" src="/assets/jquery.smartmenus.min.js"></script> <script type="text/javascript" src="/assets/jquery.smartmenus.min.js"></script>
<script type="text/javascript" src="/assets/jquery.smartmenus.bootstrap.min.js"></script> <script type="text/javascript" src="/assets/jquery.smartmenus.bootstrap.min.js"></script>
<script type="text/javascript" src="/assets/colon_cancer_predict1.js"></script> <script type="text/javascript" src="{{preidct_js_url}}"></script>
{{table}} {{table}}
<%= stylesheet_link_tag "colon_cancer_predict1", media: "screen" %> <%= stylesheet_link_tag "colon_cancer_predict1", media: "screen" %>
<%= stylesheet_link_tag "bootstrap.min.print", media: "print" %> <%= stylesheet_link_tag "bootstrap.min.print", media: "print" %>

View File

@ -1,6 +1,6 @@
<script type="text/javascript" src="/assets/jquery.smartmenus.min.js"></script> <script type="text/javascript" src="/assets/jquery.smartmenus.min.js"></script>
<script type="text/javascript" src="/assets/jquery.smartmenus.bootstrap.min.js"></script> <script type="text/javascript" src="/assets/jquery.smartmenus.bootstrap.min.js"></script>
<script type="text/javascript" src="/assets/colon_cancer_predict1.js"></script> <script type="text/javascript" src="{{preidct_js_url}}"></script>
{{table}} {{table}}
<%= stylesheet_link_tag "colon_cancer_predict1", media: "screen" %> <%= stylesheet_link_tag "colon_cancer_predict1", media: "screen" %>
<%= stylesheet_link_tag "bootstrap.min.print", media: "print" %> <%= stylesheet_link_tag "bootstrap.min.print", media: "print" %>