ACFinder 作物タブUI修正中

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2013.10.16 23:16
kabe  長老   投稿数: 231
ようやく作物タブの修正にとりかかっています。
とりあえず、こんな感じです。
http://acfinder.kabe.info/acfinder131016test_exe.zip

完成度低いので、雰囲気を見る程度にしてください。

ちょっと、ごちゃごちゃし過ぎてて、もう少しシンプルな検索インターフェイスにしないと、混乱しそうです。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.10.17 06:52
kabe  長老   投稿数: 231
少なくとも作物名を選択する部分は、左選択ペインに集中させた方がいいですね。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.10.19 22:24 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
UI については雰囲気だけと言うことですが、1点だけ。検索タブの検索結果ですが、作物名のレベルが分かるようにしていただけるとありがたいです。

それと、SQL の修正を1点。たとえば、検索タブで「根深ねぎ」を「上位分類含む」で選択した場合、SQL が下記のようになり、根深ねぎ以外の level = 4 の作物まで検索されてしまいます。分類タブで「ねぎ、根深ねぎ、ねぎ類、ねぎ(露地栽培)」を選んだ場合も同様ですね。
SELECT idSaku FROM m_sakumotsu WHERE idSaku REGEXP '^(02000000|02990051|0299005109)'
level = 4 の作物名を含む場合、level = 3 の作物 ID は 10 桁にする必要があります。
SELECT idSaku FROM m_sakumotsu WHERE idSaku REGEXP '^(02000000|0299005100|0299005109)'
この「02000000|0299005100|0299005109」を生成するロジックを SQL だけで書くと、下記のようになります。
select concat('|', if(level = 4, idsaku, if(level < 3, substr(idsaku, 1, 8),if((select max(level) from sakumotsu where sakumotsu in ('野菜類','その他野菜類','ねぎ','根深ねぎ')) = 4, idsaku, substr(idsaku, 1, 8))))) from sakumotsu where sakumotsu in ('野菜類','その他野菜類','ねぎ','根深ねぎ')
複雑そうに見えて実行速度はほとんどかかりませんが、level = 4 を含むかどうかの判定は Delphi 側でやっちゃった方が分かりやすいですかねえ…。
select max(level) from sakumotsu where sakumotsu in ('野菜類','その他野菜類','ねぎ','根深ねぎ')
これで maxlevel を取得して、maxlevel = 4 のときは
select concat('|', if(level < 3, substr(idsaku, 1, 8), idsaku)) from sakumotsu where sakumotsu in ('野菜類','その他野菜類','ねぎ','根深ねぎ')
maxlevel < 4 のときは
select concat('|', substr(idsaku, 1, 8)) from sakumotsu where sakumotsu in ('野菜類','その他野菜類','ねぎ')


ついでに、「(○○を除く)」の削除部分ですが、新 UI では適用検索時は常に正式な作物名が使用されるので、別名を処理する必要はないはずです。上の根深ねぎの例で言うと、
concat('、', sakumotsu, betsumei) NOT REGEXP '\((.*、)?(野菜(類)?|その他野菜(類)?|ねぎ|根深ねぎ)(、.*)?を(除|のそ)く'
の部分は、
sakumotsu NOT REGEXP '\((.*、)?(野菜(類)?|その他野菜(類)?|ねぎ|根深ねぎ)(、.*)?を除く'
と単純化できます。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2013.10.24 22:14
kabe  長老   投稿数: 231
131024test版 exe です。
http://acfinder.kabe.info/acfinder131024test_exe.zip

動作確認お願いします。

作物タブ内の作物選択ペインに、主作物側と近接作物側の振り分け設定を配置しました。
主作物か近接作物のボタンが押下されている側に、分類タブもしくは作物名検索タブでチェックした選択作物名が入ります。

作物名検索タブで検索した場合、入力した作物名と検索結果の作物名が完全一致するものは、検索語入力、Enter で即、適用検索します。
直接入力の感覚を残したかったので、このようにしています。

自動検索がうざい場合には、オプションで、有効、無効を選択できるようにします。

作物名検索方法の設定は作物名検索タブ内のツールボタンで、前方一致か部分一致か選択します。
ちょっとアイコンがわかりくにいので、ヒントで確認してください。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.10.24 23:21 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
kabe さん、お疲れ様です。かなり良い感じになってきましたねえ
ただ、作物選択ツリー/リストボックスにフォーカスがあるときにエンターキーで適用検索を実行するってのは、かなり分かりづらいです。作物名テキストボックスの周辺に、「適用表示」ボタンがあった方が分かりやすいかなあと…。高速なマシンを使っている人用に、作物名チェックの変更で自動的に適用を更新するモードがあると、さらに良さそうです。

細かい話を1点。「○○を除く」の削除部分ですが、「を(除|のそ)く」にする必要は無く、「を除く」で OK です。

今後の課題として、病害虫タブもこちらのスタイルへの移行をご検討いただけるとありがたいです。
あと、作物名検索タブのツリー表示も。今回から検索された作物の階層は分かるようになりましたが、単純な上位作物一括検索だけで無く、分類タブのように上位/下位の作物名も含めてツリー表示にし、必要な階層を任意にチェックできるようになると非常に使い勝手が良くなると思います。
さらに、定型処理の作物選択ダイアログボックスも、これと同様のチェックボックス付きツリー表示になると便利です。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.10.25 09:47 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
今使ってて、「えごま(葉)」の上位分類一括検索で「野菜類(はくさい、えごま(葉)を除く)」の適用が表示されてしまうことに気がつきました。「○○を除く」削除部分の正規表現で、括弧のエスケープ処理ができてないのが原因です。
「豆類(未成熟)」とか「ぶどう(巨峰)[有核栽培]」など「(,),[,]」を含む作物名は、それぞれ「\(,\),\[,\]」にエスケープ処理しておく必要があります。
crop := 'さやいんげん|豆類(未成熟)|野菜類';
crop := AnsiReplaceStr(crop, '(', '\(');
crop := AnsiReplaceStr(crop, ')', '\)');
crop := AnsiReplaceStr(crop, '[', '\[');
crop := AnsiReplaceStr(crop, ']', '\]');
crop := AnsiReplaceStr(crop, '類', '(類)?'); //括弧のエスケープ処理が終わってから実行すること


あと、作物名検索で「ろじきゅうり」「露地きゅうり」が検索できません。露地きゅうりの正式作物名が、「きゅうり(露地栽培(直播栽培))」「きゅうり(露地栽培(移植栽培))」の2つで、「きゅうり(露地栽培)」じゃないのが原因のようです。
MACS では、検索キーワードを下記のように正規化してから作物名の検索をかけています。これで、「ろじきゅうり」「きゅうりろじ」どちらでも OK です。
ついでに、下2行は、「未成熟豆類」「豆類未成熟」を使えるようにするための正規化です。極端な話、「みまめ」「まめみ」でも「豆類(未成熟)」が検索できます。
$str = preg_replace('/(.*)?((露地|ろし|施設|しせつ|水耕|すいこう)(栽培|さいはい)?)(.*)?/', '\1\5\(\2', $str);
$str = preg_replace('/(未|み)(成熟|せいしゆく)?(豆|まめ)(類|るい)?/', 'まめるい\(みせいしゆく\)', $str);
$str = preg_replace('/(豆|まめ)(類|るい)?\(?(未|み)(成熟|せいしゆく)?\)?/', 'まめるい\(みせいしゆく\)', $str);
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013.10.25 14:10 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
「近接データ非表示」をチェックしたときの SQL にシンタックスエラーがあります。で、下記も含めてひとつ提案です。
引用:作物名テキストボックスの周辺に、「適用表示」ボタンがあった方が分かりやすいかなあと…。
「近接データ非表示」は廃止して、作物名テキストボックス左側のアイコンを適用表示のためのボタンにしてはどうでしょう?
たとえば、主作物適用表示ボタンは、主作物テキストボックスの内容が変更されたらボタンを上げます。ボタンを押すと新しい主作物で適用を表示して、ボタンを下げたままにします。ボタンが下がった状態でボタンを押しても、何もしません。
近接作物適用表示ボタンは、押すと近接作物の適用を表示してボタンが下がったまま、もう一度押すとボタンが上がって近接作物の適用を消します。近接作物テキストボックスの内容が変更されるか、主作物適用表示ボタンが押されたら、ボタンを上げます。
なお、主作物選択モードでは主作物適用表示ボタンをデフォルトボタン、近接作物選択モードでは近接作物適用表示ボタンをデフォルトボタンにし、フォーカスの位置にかかわらずエンターキーをデフォルトボタンクリックに位置づけます。
この UI の場合、主作物/近接作物表示パネルは、作物選択ペインの上側に置いた方が使いやすいかもしれません。

この案を採用するかどうかはともかくとして、適用表示ボタンの追加、「近接データ非表示」のエラーと括弧付き作物のエスケープ処理の修正ができた段階で正式版公開で良いのではないかと思います。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 .5 .6 | 投稿日時 2013.10.27 22:57
kabe  長老   投稿数: 231
本日段階でのテスト版です。
http://acfinder.kabe.info/acfinder131027test_exe.zip

まだ詰めが甘いかもしれません。

適用検索ボタンは、主作物側、近接作物側を選択するボタンと同じ、ツールバー上に配置しています。
機能からすると、配置場所に一貫性がありませんが、スペースが空いていたので。

分類タブの作物分類ツリー、作物名検索タブの作物候補リストのチェックボックスをクリックした時点で、即適用検索するモードを選択できるようにしました。
即時検索のオンオフ選択は各タブのツールボタンのヒントで確認してください。
ですので、適用表示ボタンの必要性はそうないかもしれません。

主作物、近接作物ごとの適用表示ボタンは、いったん向かってみたのですが、本日段階ではうまく制御できず、挫折しています。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.10.27 23:57 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
お~、即時検索はかなり良いですねえ。さすがに稲関係で上位分類も手動でチェックすると時間がかかるので常用するのは辛そうですが、野菜なら登録農薬が多い果菜類でも十分実用的です。
ただ、上位分類一括検索のオン/オフや近接作物のクリア、さらに検索作物の全チェックボタンで即時検索のトリガーがかからないのがちょっと…。チェックツリーボックス/チェックリストボックスの OnChange ではなく、主作物/近接作物のテキストボックスの OnChange で処理した方が良さそうです。

細かい話になりますが、主作物/近接作物のモード選択ボタンの短縮形が「作.」「近.」になってしまったので、両ボタンともヒントを表示するようにした方が良いと思います。また、適用検索は検索系アイコンが付いているので、短縮形は「適用」の方が分かりやすいかも…。
あるいは、ボタン名フル表示可能な横幅以下にはしないようにするという手もありますが…。

「えごま(葉)」、「露地きゅうり」、「未成熟豆類」いずれの問題も修正されたので、次は正式公開で良いんじゃないでしょうか。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.10.28 10:56 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
部分一致作物名検索で、「稲」だと「(移植)水稲」「陸稲」なども表示されるのに、「いね」だと「すいとう」「りくとう」には当然マッチしないので「水稲」「陸稲」が表示されません。ということで、sakumotsu.txt に「水稲」「陸稲」の別名として「みずいね」「りくいね」を追加しました。

作物名検索をやってて気づきましたが、sakumotsu テーブルには最初から「(○○を除く)」という作物名が入っていないので、下記コードの AND 以下(「(○○を除く)」削除部分)は不要です。まあ、AND 以下が付いてても SQL 自体はこのままで問題なく動作しますし、付いていることによるタイムペナルティも微々たるものでしょうが…。
SELECT level,idSaku,sakumotsu FROM sakumotsu WHERE  concat('、', sakumotsu, betsumei) REGEXP '(^|、|\()(稲).*?(\)|、|$)' AND concat('、', sakumotsu, betsumei) NOT REGEXP '\((.*、)?(稲).*?(、.*)?を(除|のそ)く' ORDER BY idSaku;


あと、前にも書きましたが、適用検索時の「(○○を除く)」削除部分の正規表現で、「を(除|のそ)く」は「を除く」で OK です。これも、SQL 自体は問題ありませんし、タイムペナルティもほとんどないに等しいとは思いますが…。
投票数:0 平均点:0.00

なし 未削除屋号

msg# 1.3.3.1.3
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.10.28 13:50 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
新作物 UI とは関係ありませんが、旧ファイザー(現ゾエティス・ジャパン)の新登録農薬の屋号が「ゾエティス」になっているので、通称から「ゾエティス」の削除をお願いします。今のところ「ゾエティスバクテサイド水和剤」1剤だけですが、「バクテサイド水和剤」は他に2剤あるので。
ちなみに、MACS では「ゾエティス」以外に、「キャピタル」と「太洋」も屋号として通称からは抜くようにしました。どちらも1剤のみで、「メリーネコりん化亜鉛」「ラテミンリン化亜鉛1%」等と同様に屋号込みで通称という感じもするので、抜いた方が良いかどうかは微妙なところですが…。
投票数:0 平均点:0.00

なし 登録日/有効期限

msg# 1.3.3.1.4
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013.10.28 16:12 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
これも新作物 UI とは関係ない部分ですが、薬剤タブで新規登録剤の登録日/有効期限が表示されません。おそらく、下記の結果がエンプティの場合、毒性等の表示行全てを表示しないようにしちゃってるんじゃないかと…。
登録日と有効期限は、m_kihon から取得しているので、必ず存在します。存在するデータだけでも、表示するようにして頂けるとありがたいです。
SELECT bango ,dokusei, kousin FROM spec.seizai WHERE bango = nnnn


用途・剤型等及び毒性・登録日等の表示行は、下記のように SQL で作ってしまうという手もありますね。例示の 23365 は、毒性・更新日がまだ取得できないケースです。
SELECT CONCAT(' ', yoto, koka, zaikei, ryakusho) FROM m_kihon WHERE bango = 23365;
SELECT CONCAT(' ', IF(dokusei IS NULL,'','毒:'||dokusei), '登:'||torokubi, IF(kousin IS NULL,'','更:'||kousin), '有:'||a.kigen) FROM m_kihon AS a LEFT JOIN seizai USING(bango) WHERE bango = 23365;
投票数:0 平均点:0.00

なし Re: 登録日/有効期限

msg# 1.3.3.1.4.1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.10.29 09:05 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
登録日/有効期限絡みでもうひとつ。特に急ぎではありませんが、登録日と有効期限の月日で1桁は 01 のように2桁に変換して頂けるとありがたいです。現状だと、日付の大小比較ができません。月日が2桁にそろうと、max, min 関数も正常に動作するようになります。

ちなみに、MACS DB では、kihon.csv をそのまま読み込んだテーブルから m_kihon に変換する途中で中間テーブルを作成しているので、その際に下記のように SQL で2桁変換と区切り文字変換しています。
create temp table kihon3 as select bango,shurui,yoto,zaikei,replace(re_replace('/([1-9])(?=/|$)',torokubi,'/0$1'), '/', '.') as torokubi,replace(re_replace('/([1-9])(?=/|$)',kigen,'/0$1'), '/', '.') as kigen from kihon group by bango;
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.10.30 08:56 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
作物分類ツリーの全開ですが、全てのツリーが全部開いても使いにくいです。選択しているアイテム以下のツリーのみを全開するようにすることは可能でしょうか? 「野菜類」を選択しているときは野菜類の下の分類のみ、「あぶらな科野菜」を選択している時はあぶらな科野菜の下の分類のみをツリーを全開するという感じです。
全閉は今のまま完全全閉でも全く問題はありませんが、選択アイテム以下のみ全閉が可能なら便利かも…。

本質的な部分じゃないので、急ぎではありませんし、無理なら無理でしょうがないです。
投票数:1 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2013.11.03 12:06
OhYeah!  管理人   投稿数: 983 オンライン
これも急ぎではありませんし、前にも書いたような気がしますが…。

薬剤タブの結果を HTML、別窓、Excel 等へ出力したときに、水産動植物への影響が表示されません。どこに出力しても、水産動植物への影響が表示されるようになるとありがたいです。特に HTML 出力は、そのまま印刷して指導資料決裁時のチェック用として添付することが多いので…。

あと他のタブも含めて別窓全体ですが、基本設定で表示したフォントで表示されません。基本フォントと適用表示グリッド(偶数行)のフォントを別窓にも反映していただけると、別窓が見やすくなります。MSゴシック等は小さいとビットマップフォントになるので見づらくて
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013.11.04 21:32
kabe  長老   投稿数: 231
本日段階のテスト版 EXE です。
http://acfinder.kabe.info/acfinder131104test_exe.zip

だいたいは修正したつもりですが、一部手をつけていないところがあります。

薬剤タブの水産動植物への影響部分の外部出力については別窓とHTML は修正しました。スプレットシートの出力については、HTML を読み込むOOo Calc は反映されてますが、Excel と Kingsoft SS についてはまだ手をつけていません。
というか Excel Kingsoft については、元々グリッド部分をコピーするだけなので、薬剤タブについては不完全です。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.11.05 00:23
OhYeah!  管理人   投稿数: 983 オンライン
kabe さん、お疲れ様です。急ぎではないところまで、かなり対応していただきありがとうございます。
自動検索は、非常に使いやすくなりました。ツリー全開も、やはり選択アイテムのみ全開の方が使いやすいですね。登録日等の日付表記、屋号も修正されていることを確認しました。

各種データソースで試してて気がついたんですが、データ更新ダイアログで薬検 CSV を更新する際に、新しい update2.html をダウンロードしないようです。古い update2.html がある場合は、そこに記載されている古いファイルをダウンロードしようとして 404 エラーになります。update2.html がない場合は、空白のファイル名のファイルをダウンロードしようとしてしまいます。
Excel の方は、特にダウンロードページを保存はしていないようで、データ更新ダイアログから問題なく更新が可能です。もちろん、MACS CSV や SQLite DB も問題ありません。
データ更新ダイアログ自体がそれほど使われることはないでしょうし、デフォルトダウンロードサイトである薬検 CSV のみの問題なので、実用上はほとんど問題になることはないと思いますが…。

ということで、とりあえず 131104test 版を最新 TEST 版としてフルセット公開するのも良いし、データダイアログの件がすぐ直るなら安定版として正式公開でも良いのではないかと思います。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.11.08 16:27
OhYeah!  管理人   投稿数: 983 オンライン
131105/131107 版はフォント設定対応別窓の実装途中だったんでしょうか?
奇数行は設定フォントが反映されていて、偶数行は反映されていません。薬剤タブ別窓の剤の概要・有効成分リスト・水産動植物への影響も未反映です。
まあ、これは急ぎじゃないので、Delphi XE3 に移行するときにでも対応頂ければと思います。
投票数:0 平均点:0.00

  条件検索へ