5.6.5.0 (2013/06/03) [autoLinkスクリプトの追加] 画面上のhttp,httpsに対して自動でリンクを作成するスクリプトを追加します。 現段階では自動動作及びタグでのコントロール等は行わず、optionへの追加に留めておきます。 jsp/common/option/urlAutoLink.js 5.6.4.4 (2013/05/31) [XMLパーサー] OGAttributes で、属性情報の出力で、属性数が4以上、文字列が80文字以上の場合、 折り返しの特殊処理をおこなっていましたが、この処理で、属性がくっつく現象が発生しました。 修正します。 fukurou.xml.OGAttributes#getText( final String attTab ) fukurou.xml.OGDocument#toString() fukurou.xml.OGElement#getText( final int cnt ) fukurou.xml.OGElement#getPara( final int cnt ) [JspEnumeration] JSP作成で、タブによる位置合わせにおいて、範囲オーバーになる計算方法が あったので、修正しました。 hayabusa.develop.JspEnumeration$enum WHERE_OPERATORS#leftVal( final String left ) column タグ作成で、名前空間 を設定し忘れていたので、追加します。 plugin.develop.JspCreate_COLUMN#execute( final OGElement ele , final String nameSpace ) JspCreate_SELECT は、JspCreate_ORDER_BY に変更します。 その他、新規追加(JspCreate_HIDEMENU)、変更します。 plugin.develop.JspCreate_SELECT.java 削除 plugin.develop.JspCreate_COLUMN.java 変更 plugin.develop.JspCreate_HIDEMENU.java 新規追加 plugin.develop.JspCreate_ORDER_BY.java 変更(JspCreate_SELECTの代わり) plugin.develop.JspCreate_QUERY.java 変更 plugin.develop.JspCreate_TABLE_UPDATE.java 変更 画面作成関連の修正を行いました。 gf/jsp/GF2250 gf/jsp/GF2251 gf/jsp/GF2252 gf/jsp/common/gamen/11_GUIMAKE/jspOut.jsp 5.6.4.3 (2013/05/24) [valueタグ 最大、最小取得] valueタグで、DBTableModelから、最大値と最小値を取得する アクション(MAX_MIN、ALL_MAX_MIN)を追加します。 これは、command="SETTBL" の場合に、DBTableModelから、key に指定したカラムの 最大値と最小値を MIN.キー と MAX.キー 変数にセットします。 つまり、{@MIN.キー} や、{@MAX.キー} で値を取り出すことが可能になります。 これにより、検索結果と同じ条件で、再検索することなく、最大値、最小値を取得できるようになります。 MAX_MIN は、選択された行番号を対象に、最大値、最小値を求め、ALL_MAX_MIN は、検索結果のすべてのレコードから 最大値、最小値を求めます。 MAX_MIN ,ALL_MAX_MIN については、DBTableModelのカラムのCLS_NAMEが、NUMBER,INTEGER,DECIMAL の場合は、 数字型(double)に変換して比較します。 数字型(double)の場合だけ、合計(SUM.キー) と 平均(AVG.キー)計算も同時に行います。 それ以外の場合は、文字列比較を行います。(command="SETTBL" のみ) command="SET" の場合は、数字型(double)として、value の値を、separator で分解したうえで、 最大、最小、合計、平均 を計算し、それぞれを、MIN.キー、MAX.キー、SUM.キー、AVG.キー 変数にセットします。 数字に変換できなかった場合は、エラーになります。 null は、無視され(平均を求める場合の母数としても無視)、すべてが nulll の場合は、ゼロ文字列("")になります。 ゼロ文字列("") の場合に、defaultVal 属性が設定されていると、defaultVal が設定されます。 hayabusa.taglib.ValueTag#setTableAttribute( final DBTableModel table,final String key,final String action ) hayabusa.taglib.ValueTag#setAttribute( final String key,final String value,final String action ) gf/jsp/GF7070 サンプル修正 command="SETTBL" で、選択行の判定で、ACT_ALL_APPEND のみ、選択行がない場合でも動作するように していましたが、"ALL_" で始まる action をすべて許可するように変更します。 hayabusa.taglib.ValueTag#setTableAttribute( final DBTableModel table,final String key,final String action ) command="SETTBL" で、action="ALL_MAP" の時に、row=1 から始まっていたので、row=0 に変更します。 hayabusa.taglib.ValueTag#setTableAttribute( final DBTableModel table,final String key,final String action ) [valueタグ parameter 属性削除] parameter 属性を廃止します。 これは、現時点で使っていないのと、将来的に、"parameter" 属性をすべて、param 属性に変更したいので、 今のうちに、不要な属性を整理していきます。 これに伴い、tld からも、削除しておきます。 hayabusa.taglib.ValueTag#release2() hayabusa.taglib.ValueTag#setParameter( final String param ) [valueタグ tmpSelectedAll 属性追加] 内部だけで使用する、tmpSelectedAll 属性を追加します。 action="ALL_xxxx" 関係は、tmpSelectedAll="true" で内部処理します。 これは、他のタグの、selectedAll 属性と同等の働きをして、すべての行を選択行と同じように扱います。 hayabusa.taglib.ValueTag#release2() hayabusa.taglib.ValueTag#setSQLAttribute( final DBTableModel table ) hayabusa.taglib.ValueTag#setTableAttribute( final DBTableModel table,final String key,final String action ) hayabusa.taglib.ValueTag#getParameterRows() [{@NVL.XXXX} サンプル] {@NVL.XXXX} 追加に伴う、サンプル JSP を用意しました。 既存の GF6000(テキストフィールド ) です。 gf/jsp/GF6000 サンプル修正 gf/jsp/common/gamen/01_ADMIN/printSystemParameter.jsp [Javadoc 修正] Javadoc コメントで、@ が使われている箇所を、@ に置き換えます。 hayabusa.taglib.CommonTagSupport.java hayabusa.taglib.URLConnectTag.java hayabusa.taglib.RequestValueTag.java hayabusa.taglib.MailSenderTag.java hayabusa.taglib.DataCheckTag.java [iBar のパディング] ガントバーで用意した、paddingLeft,paddingRigth 属性を iBar にも用意します。 hayabusa/taglib/ViewIBarTag#setPaddingLeft( final String paddingLeft ) hayabusa/taglib/ViewIBarTag#setPaddingRigth( final String paddingRigth ) hybs-taglib.tld iBar タグに、paddingLeft,paddingRigth 属性追加 [GanttHeaderTag の breakTimeStyle] GanttHeaderTag の breakTimeStyle の初期値を変更します。 IEの下位バージョンでも透過するようにします。 breakTimeStyle = "top:20px;background-color:yellow;filter:alpha(opacity=60);opacity:0.60;" hayabusa/taglib/GanttHeaderTag#breakTimeStyle 日本語の"日"が入ると、ヘッダーがずれていたので、修正しました。 以前、Firefox対応されているので、文字数での位置合わせ基準になっているため、 "日" を2文字の、"日 " に修正しました。 hayabusa/taglib/GanttHeaderTag#makeZoomTime( final int hourOfPixcel,final int step,final boolean useTani ) [useTbodyMovable の 付け忘れ] 5.6.3.3 (2013/04/19) で追加した useTbodyMovable を付け忘れしていたので、対応します。 hayabusa.taglib.HeadTag#doEndTag() [jsp/image に追加] jsp/image にthumbフォルダを追加します。 excel.png 、media.png 、pdf.png 、ppt.png 、word.png 、zip.png [ColumnEditorTag の parameter属性] ColumnEditorTag の parameter属性名を、param に変更します。 単に、ColumnTag は、param なので、統一するためです。 既存の属性は、廃止属性として、当面は、互換性のため残しておきます。 hayabusa.taglib.ColumnEditorTag#setParameter( final String prm ) hayabusa.taglib.ColumnEditorTag#setParam( final String prm ) [FAQアイコン表示の制御] helpタグでヘッダに表示する際に、関連画面IDが入っているものが存在する場合のみ表示可能にします。 helpタグのuseFaqCtrl属性をtrueにするか、システムリソースのUSE_GUI_FAQ_CTRLをtrueにします。 初期値はfalseです。 なお、画面リソースを利用して判定しているため、反映にはリソース更新が必要です。 hayabusa.resource.GUIDataLoader#QUERY hayabusa.resource.GUIInfo#isFaq() hayabusa.resource.GUIInfo#getAttribute( final String key ) hayabusa.resource.GUIData#GUIData( final String[] data ) hayabusa.resource.GUIData#toString() hayabusa.taglib.HelpTag#release2() hayabusa.taglib.HelpTag#makeTagFaq() hayabusa.taglib.HelpTag#setUseFaqCtrl( final String flag ) hayabusa.common.SystemData#USE_GUI_FAQ_CTRL hybs-taglib.tld useFaqCtrl属性追加 [result_infoでのhelpアイコン指定変更] result画面のHelpアイコンをresult_infoで出していますが、 common/gamen内からのURIに問題があるため、../imageではなく{@SYS.JSP}/image に変更します。 同様にjquery-ui.jsやchangeFontSize.jsの指定も変更します。 jsp/custom/result_info.jsp jsp/custom/result_FS_info.jsp jsp/custom/result_info.jsp [時間軸の角度] 時間軸を表す DateAxis オブジェクトで、角度を変更したいが、本来は、 rotationLabel ではなく、useVerticalLabels [true/false]を使います。 しかし、メソッドの配置の関係から、ChartCreate に作ってしまったので、 rotationLabel=2 (90度)のときのみ、useVerticalLabels=true を有効にする 処理を入れます。(近いうちに修正するかも) hayabusa.taglib.ChartCreateTag#release2() hayabusa.taglib.ChartCreateTag#create() hayabusa.taglib.ChartCreateTag#setUseVerticalLabels( final String useVLavels ) hayabusa.io.ChartCreate#getDateAxis() hayabusa.io.ChartCreate#setUseVerticalLabels( final boolean useVLavels ) gf/jsp/GF6120 JFreeChart サンプル修正 gf/jsp/GF7219 タイムチャートサンプル 新規追加 dateAxisFormat 変数が、パラメータ処理のロジックが入っていなかったので、修正しました。 hayabusa.taglib.ChartCreateTag#setDateAxisFormat( final String dtFormat ) 5.6.4.2 (2013/05/17) [紙芝居作成] 紙芝居で、実行時間計測を行うと、マイナス値が発生し、エラーになるケースがあります。 紙芝居専用ですが、実機でもマイナスになることは無いので、対策を入れておきます。 jsp/common/queryScript.js(53): // 5.6.4.1 (2013/05/10) pView がマイナスの場合は、0 に設定する。 [紙芝居作成] 雛形自動作成 で、useAjaxSubmit="true" の場合、entry.htm にJavaScriptを入れて、forward させますが ターゲットの判定方法(eval)がうまく動いていないので、それの対応を行った。 jsp/common/option/noTranHref.js [紙芝居作成] Matrixメニュー buttonRequest 廃止対応 URI分離 URI分離 request取出 @ gamenId="jsp" + index.jsp + GAMENID=XXXX ⇒ saveDir + "jsp/indexXXXX.htm" Matrixメニューからの画面呼出し。 A gamenId="jsp" + result.jsp + GAMENID=XXXX ⇒ saveDir + "jsp/indexXXXX.htm" 画面QUERYのヘッダーメニュー B gamenId="menu" + multiMenu.jsp + group=YYYY ⇒ saveDir + "menu/menuYYYY.htm" 通常メニューのグループ選択 C gamenId="menu" + matrixMenu.jsp + group=YYYY ⇒ saveDir + "menu/matrixMenuYYYY.htm" Matrixメニューのグループ選択 hayabusa/filter/FileFilter#makeFileName( final ServletRequest request ) hayabusa/filter/FileResponseTransform$IndexMatrixMenuData#replace( final String file,final String inStr ) hayabusa/filter/FileResponseTransform$HrefChangeData#replace( final String file,final String inStr ) fileDownload だけ特殊。ファイルのエンコードは、UTF-8 ではなく、UnicodeLittle でセーブする。 hayabusa/filter/FileResponseStream#close() hayabusa/filter/FileFilter#makeFileName( final ServletRequest request ) renew('queryNW.htm','QUERY',this) 変換 query.htm ファイル内の、renew('query.htm','QUERY',this) を renew('queryNW.htm','QUERY',this) に変換します。 queryNW.htm 内の renew は、変換しませんので、イベント発生時に、query.htm と queryNW.htm を行き来します。 hayabusa/filter/FileResponseTransform#private static final ChangeData[] data 宣言 イベントカラム関係で、紙芝居実行時のエラーを極力減らすための条件設定を行いました。 eventScript.js#eventColumn( jEvCol, jTag, cid, cname, suffix, writable ) [ガントバー] ガント系で、同一色を重ねて表示する場合、区切り線が欲しい 従来は、L,Rの画像を用意していましたが、前回廃止したため、今回の対応を入れます。 iGantt タグに、paddingLeft,paddingRigth 属性追加 jsp/common/option/option/adjustGanttTable.js hayabusa/taglib/ViewIGanttTag#setPaddingLeft( final String paddingLeft ) hayabusa/taglib/ViewIGanttTag#setPaddingRigth( final String paddingRigth ) hybs-taglib.tld iGantt タグに、paddingLeft,paddingRigth 属性追加 [Javascript の parseInt] Javascript の parseInt で、第2引数を付けていないと、基数を 8 で計算するパターンが存在した。 安全の為、基数の 10 を記述しておきます。 gf\src\script\common\resultScript.js(828): ,left :parseInt( popDiv.offset().left ) + parseInt( popDiv.width() ) gf\src\script\common\resultScript.js(850): left : parseInt( popDiv.offset().left ) + 8 gf\src\script\common\resultScript.js(851): ,top : parseInt( popDiv.offset().top ) + 8 gf\src\script\common\scrollBar.js(161): //oLayerDiv.style.borderTopWidth = nHeaderH + parseInt(oTab.cellSpacing); gf\src\script\common\scrollBar.js(508): // var nSpacing = parseInt(table.cellSpacing) ; gf\src\script\common\scrollBar.js(584): //var nTopWidth = parseInt(layer.style.borderTopWidth || 0); gf\src\script\common\scrollBar2.js(430): // nHoriLimit = ($t.p.width ) ? parseInt($t.p.width ) : nHoriLimit; gf\src\script\common\scrollBar2.js(431): // nVertLimit = ($t.p.height) ? parseInt($t.p.height) : nVertLimit; gf\src\script\common\calendar\fullcalendar.js(2377): var index = parseInt(this.className.match(/fc\-day(\d+)/)[1]); // TODO: maybe use .data gf\src\script\common\calendar\fullcalendar.js(3241): var mins = parseInt(rowMatch[1]) * opt('slotMinutes'); gf\src\script\common\option\adjustBar.js(417): clrNo = parseInt(clrNo) % colorNoList.length ; // なければ、連想配列の長さで割り算し、余を求める。 gf\src\script\common\option\adjustBar.js(665): clrNo = parseInt(clrNo) % colorNoList.length ; // なければ、連想配列の長さで割り算し、余を求める。 gf\src\script\common\option\adjustField.js(36): cols = parseInt( objField[0].getAttribute('cols') ); gf\src\script\common\option\adjustField.js(49): cellHeight = parseInt( objField[0].getAttribute('cellHeight') ); gf\src\script\common\option\adjustField.js(54): tables = parseInt( objField[0].getAttribute('tables') ); gf\src\script\common\option\adjustField.js(58): tableMargin = parseInt( objField[0].getAttribute('tableMargin') ); gf\src\script\common\option\adjustField.js(62): tableBorder = parseInt( objField[0].getAttribute('tableBorder') ); gf\src\script\common\option\adjustGanttTable.js(565): hilightBar.parentNode.style.left = (parseInt( oriLeft ) + moveDist)+"px"; gf\src\script\common\option\adjustGanttTable.js(578): hilightBar.parentNode.style.left = (parseInt( oriLeft ) + moveDist)+"px" ; gf\src\script\common\option\adjustGanttTable.js(593): hilightBar.parentNode.style.left = (parseInt( oriLeft ) + moveDist) +"px"; gf\src\script\common\option\adjustGanttTable.js(1079): clrNo = parseInt(clrNo) % colorNoList.length ; gf\src\script\common\option\adjustGanttTable.js(1636): fixedCols = parseInt( fixedCols || "0" ); gf\src\script\common\option\adjustGanttTable.js(1936): fixedCols = parseInt( iTable[0].getAttribute('fixedCols') || "0" ); gf\src\script\common\option\adjustGanttTable.js(2007): fixedCols = parseInt( iTask[0].getAttribute('fixedCols') || "0" ); gf\src\script\common\option\adjustMatrix.js(557): rowStart = new Number( parseInt( startCell.row ) <= parseInt( endCell.row ) ? startCell.row : endCell.row ); gf\src\script\common\option\adjustMatrix.js(558): colStart = new Number( parseInt( startCell.col ) <= parseInt( endCell.col ) ? startCell.col : endCell.col ); gf\src\script\common\option\adjustMatrix.js(559): rowEnd = new Number( parseInt( startCell.row ) <= parseInt( endCell.row ) ? endCell.row : startCell.row ); gf\src\script\common\option\adjustMatrix.js(560): colEnd = new Number( parseInt( startCell.col ) <= parseInt( endCell.col ) ? endCell.col : startCell.col ); gf\src\script\common\option\adjustMatrix.js(600): rowStart = new Number( parseInt( startCell.row ) <= parseInt( endCell.row ) ? startCell.row : endCell.row ); gf\src\script\common\option\adjustMatrix.js(601): colStart = new Number( parseInt( startCell.col ) <= parseInt( endCell.col ) ? startCell.col : endCell.col ); gf\src\script\common\option\adjustMatrix.js(602): rowEnd = new Number( parseInt( startCell.row ) <= parseInt( endCell.row ) ? endCell.row : startCell.row ); gf\src\script\common\option\adjustMatrix.js(603): colEnd = new Number( parseInt( startCell.col ) <= parseInt( endCell.col ) ? endCell.col : startCell.col );