DaGaAr ___________________________080609_________________
[タイトル]:legendが消えるのが問題でして
[内容]:ユーザーがリストオプション操作をし続けることでlegendのindexがずれてどの変数とも対応しなくなるのが問題。
[目的] @plot_files, @del_files, @legendのindexを@r_filesのindexに合わせるようにする。
legendの動きのテスト>>
- CEMP,RGB -> del check -> plot時の各変数+index一覧(下)がフォームから送信される
index: r_files: plot_files: del_files: legend: 0 _MP.dat _MP.dat CEMP_RGB.dat MP 1 _EMP_RGB.dat _EMP_RGB.dat EMP,RGB 2 _EMP_MS.dat _EMP_MS.dat EMP,MS 3 _Crich_RGB.dat _Crich_RGB.dat Crich,RGB 4 _Crich_MS.dat _Crich_MS.dat Crich,MS 5 _CEMP_RGB.dat _CEMP_RGB.dat CEMP,RGB 6 _CEMP_MS.dat _CEMP_MS.dat CEMP,MS
index: r_files: plot_files: del_files: legend: 0 _MP.dat _MP.dat MP 1 _EMP_RGB.dat _EMP_RGB.dat EMP,RGB 2 _EMP_MS.dat _EMP_MS.dat EMP,MS 3 _Crich_RGB.dat _Crich_RGB.dat Crich,RGB 4 _Crich_MS.dat _Crich_MS.dat Crich,MS 5 _CEMP_RGB.dat _CEMP_RGB.dat CEMP_RGB.dat CEMP,RGB 6 _CEMP_MS.dat _CEMP_MS.dat CEMP,MS
index: r_files: plot_files: del_files: legend: 0 _MP.dat _MP.dat _Crich_RGB.dat MP 1 _EMP_RGB.dat _EMP_RGB.dat EMP,RGB 2 _EMP_MS.dat _EMP_MS.dat EMP,MS 3 _Crich_RGB.dat _Crich_RGB.dat Crich,RGB 4 _Crich_MS.dat _Crich_MS.dat Crich,MS 5 _CEMP_RGB.dat _CEMP_MS.dat CEMP,MS 6 _CEMP_MS.dat
index: r_files: plot_files: del_files: legend:
0 _MP.dat _MP.dat MP
1 _EMP_RGB.dat _EMP_RGB.dat EMP,RGB
2 _EMP_MS.dat _EMP_MS.dat EMP,MS
3 _Crich_RGB.dat _Crich_RGB.dat _Crich_RGB.dat Crich,RGB
4 _Crich_MS.dat _Crich_MS.dat Crich,MS
5 _CEMP_RGB.dat
6 _CEMP_MS.dat _CEMP_MS.dat CEMP,MS
index: r_files: plot_files: del_files: legend: 0 _MP.dat _MP.dat MP 1 _EMP_RGB.dat _EMP_RGB.dat EMP,RGB 2 _EMP_MS.dat _Crich_MS.dat EMP,MS 3 _Crich_RGB.dat _CEMP_MS.dat Crich,MS 4 _Crich_MS.dat CEMP,MS 5 _CEMP_RGB.dat 6 _CEMP_MS.dat
[対策]:
[感想] メンドクサイ。。。 月曜朝一作業はテンションが上がらない。
_____________________________________
書き込んでみる。
@file = ({ "plot" =>1
"legend"=> "MP"
..
}, {}, {}..)
などどする。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
___________________________080120_________________
plot "images/cgisess_f1143c963f4bd335965bb4d42cbed4cb_hist.dat" using 1:2 title "" with boxes lt lwとなってしまっていた。
___________________________080128_________________
_______________080303____________________________
[問題]: ファイルアップロード<input type="file">タグがあるとページの有効期限切れになる
[対策1]:ページ更新切れのページを検索した。
[結論]:「ファイルフィールド(<input type="file">がある場合は、次のページがキャッシュされません。」とのことで基本的解決になっていない。 」
_______________080316____________________________
[問題]: ファイルアップロード<input type="file">タグがあるとページの有効期限切れになる
[対策2]: ファイルアップロードフォームへのリンクを張ってそのアップロードフォームでplotボタンを押すと、元のフォームでplotボタンを押すのと同じ状態することができた。これでページ有効期限切れは回避できるか?
具体的には、ファイルアップロードフォーム(upload.html)は以下のように実装した。
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <title>アップロード用フォーム</title> </head> <body> <h1>アップロード用フォーム</h1> <form action="db.cgi?#plot" method="post" enctype="multipart/form-data"> <input type="file" name="uploaded_file"> <input type="submit" name="button" value="plot" > <!--<input type="submit" value="送信">--> </form> </body> </html>
[注意点]: upload.htmlでplotをおすと同時にupload.htmlを閉じるよう実装する必要がある。又、リンク元ページでプロット情報はすでにsessionに保存されている必要がある(そうしないと、プロットでその情報だけ抜け落ちる)。
[結論]:できない
[理由]:upload.htmlでplotを押すリンク元のページが更新されず、新たにdb.cgi#plotページが生成されてしまう。から、javaなどで元のページを操作する必要あり?javaはわからない。
_______________080414____________________________
[作業]:使えそうなjavascriptを作ってみた。
http://astro3.sci.hokudai.ac.jp/~yamada/sample_select_radio2.html
[説明]:
セレクトメニュー => radioボタンの切り替え or radioボタン => セレクトメニュー切り替え
[アルゴリズム]:
A1 + B1 = 0, A1 + B2 = 1, A2 + B1 = 2, A2 + B2 = 3, ここで、ラジオグループA(A1, A2), B(B1,B2)であり、和の値はセレクトメニューのindex番号に対応している。
A1 A2 B1 B2 A1 × × 0 1 A2 × × 2 3 B1 0 2 × × B2 1 3 × ×
これから、
|A1 A2 | = | 0 2| |B1 B2 | | 0 1|
であることがわかる。
(注)行列の要素は A? + B? の値
今の場合、セレクトメニューのoptionの数=4,の場合(4×4行列) これを、任意のN×N行列に拡張するようにすれば、使えるのでは?
_______________080518____________________________
[作業]:UpLoad機能の実装
[経過]:List OptionにUpload Filesの表示、および、プロットは実装できた。
[残りの作業]:List OptionにおけるUpload FilesのLinestyle, Linetype, del, show機能の実装をする。
[名言]:ADSを制する者は宇宙を制する?
_______________080525____________________________
[本日の作業]:upload filesとlinesize,type,styleの対応づけまでをした。
[バグを発見]:Plot OptionのLegendを変更すると表示されなくなる。 そのときのplotコマンドをみると、title "" pt ps となっている ので、pointype, pointsizeがカラに設定されているのが原因とみられる。 たぶん、_allocate_indexが問題だと思われる。
[バグの原因]:_allocate_legend_indexのif ($r_files->[$i] =~ /.+_$dum1[$j]\.dat/) の部分が問題。@dum1=@legendで、defaultではr_filesの一部に@legendが入っているが、書き換えてしまったらこのif文は意味がない。
my @dum1 = @legend;
my @dum2 = @linetype;
my @dum3 = @linesize;
@legend = ();
@linetype = ();
@linesize = ();
foreach my $i (0..$#{$r_files}){
foreach my $j (0.. $#dum1){
$dum1[$j] =~ s/,/_/;
if ($r_files->[$i] =~ /.+_$dum1[$j]\.dat/){
#$lg->Debug("\$r_files->[$i] : $r_files->[$i] | \$legend[$j] : $dum1[$j] | \$linetype[$j] : $dum2[$j] | \$linesize[$j] : $dum3[$j]");
$dum1[$j] =~ s/_/,/;
$legend[$i] = $dum1[$j];
$linetype[$i] = $dum2[$j];
$linesize[$i] = $dum3[$j];
}
[バグ対策案]:legend,linetype,linesizeのindexを上のようにするのではなく、plot_filesのindexに合わせるようにすればいいと思う。つまり、allocate_index_oneの
foreach my $i(0..$#{$r_files}){
$dummy[$i] = $r_files->[$i] if grep(/$r_files->[$i]/, @{$r_list});
}
$dummy[$i] = $r_files->[$i] if ($r_files->[$i] = $r_list->[$j]); とかして, @dum_leg = @legend; @legend=(); $legend[$i] = $dem_leg[$j]; などとすればいいのかも。。
[Next 作業]:上のバグ修正。Upload List Optionのdel, show機能実装。メソッドの整理。Upload filesにセッションIDをつける。あと、_setup_defaultに書いたUpload filesのsetup部分は 違うメソッド_setup_default_uploadなどに書いて呼び出すようにしないといつかエラーになる。
[感想]:日曜作業は自由がないし、精神的にツライ...
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
[Freeメモを取ることにした]:
★Gnuplot::Plot->_setup_default()
my %class;
foreach my $i(0..$#Class){
(my $key = $Class[$i]) =~ s/_/,/;
$class{$key} = $i+1;
}
return %class;
} => @linetypeにusepush(@legend, $class);
my $fm = $self->_get_fm();
my $r_files = $fm->Get_File_Names();
my @plot_files = $self->_load_vars('plot_files');#071119
my @del_files = $self->_load_vars('del_files');#071119
my $prefix = $self->_get_filepre();
my %class = &Classification::Class_Hash();
for(my $i = 1; $i <= @{$r_files}; $i++){
my $class = $self->_obtain_class(\%class, $r_files->[$i-1]);
push(@legend, $class); # ex ) $class = "MP"
$lg->Debug("\$legend[$i-1] : $legend[$i-1], \$r_files->[$i-1] : $r_files->[$i-1]");
push(@linetype, $class{$class});
push(@linesize, 1);
push(@linestyle, "points");
}★Gnuplot::List_Option
-values => [keys %listsize],
-default => $linesize[$i-1],
-size => 1,
-labels => {%listsize}),
)."\n",★[行番号]