001/* 002 * Copyright (c) 2009 The openGion Project. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 013 * either express or implied. See the License for the specific language 014 * governing permissions and limitations under the License. 015 */ 016package org.opengion.hayabusa.taglib; 017 018import org.opengion.hayabusa.common.HybsSystemException; 019import org.opengion.fukurou.util.TagBuffer; 020import org.opengion.fukurou.util.ToString; // 6.1.1.0 (2015/01/17) 021import org.opengion.fukurou.util.ArraySet; // 6.4.3.4 (2016/03/11) 022 023import static org.opengion.fukurou.util.StringUtil.nval ; // 6.1.0.0 (2014/12/26) 024import java.util.Set; // 6.4.3.4 (2016/03/11) 025 026/** 027 * 明細棒グラフ(横棒、縦棒)に使用します。 028 * 029 * iBar タグは、TDタグの繰返し部に記述することで、横棒、縦棒グラフを作成します。 030 * 使用するには、headタグで、xxxx ="true" を設定する必要があります。 031 * これにより、common/option/adjustBar.js が読み込まれます。 032 * 033 * type は、グラフ要素の表示形式を指定します。0~9 が予約語で、0,1,2,6 が現時点で実装済みです。 034 * 0:ラベル表示 1:横棒 2:差分枠 6:縦棒 035 * 036 * <table class="plain"> 037 * <caption>棒グラフ 描画方向</caption> 038 * <tr><th colspan="2">横方向描画 </th><th colspan="2">縦方向描画 </th></tr> 039 * <tr><td>0</td><td>ラベル表示(比率、進捗率など)</td><td>5</td><td>(保留 未実装) </td></tr> 040 * <tr><td>1</td><td>横棒 </td><td>6</td><td>縦棒 </td></tr> 041 * <tr><td>2</td><td>差分枠 </td><td>7</td><td>(保留 未実装) </td></tr> 042 * <tr><td>3</td><td>(保留 未実装) </td><td>8</td><td>(保留 未実装) </td></tr> 043 * <tr><td>4</td><td>(保留 未実装) </td><td>9</td><td>(保留 未実装) </td></tr> 044 * </table> 045 * 046 * value は、位置、長さを設定します。設定方法は、type 毎に異なります。 047 * baseVal は、グラフ要素の描画開始位置を設定します。 048 * type=2:差分枠 は、value > baseVal の場合は、超過を、value < baseValの場合は、不足を表します。 049 * <table class="plain"> 050 * <caption>type 別設定方法</caption> 051 * <tr><th>type</th><th>設定値 </th><th>説明 </th></tr> 052 * <tr><td>0 </td><td>[V1] </td><td>xx% または 0.xx の比率を設定する。(一つのみ) , 描画位置=baseValの各カラムの合計値 * カラムV1の値</td></tr> 053 * <tr><td>1 </td><td>[V1],[V2],…,[Vn]</td><td>棒の長さ=[V1],[V2],…,[Vn]各カラムの合計値</td></tr> 054 * <tr><td>2 </td><td>[V1],[V2],…,[Vn]</td><td>描画位置=baseValの各カラムの合計値 , 差分枠の長さ=valueの各カラムの合計値 - baseValの各カラム合計値</td></tr> 055 * <tr><td>6 </td><td>[V1],[V2],…,[Vn]</td><td>棒の長さ=[V1],[V2],…,[Vn]各カラムの合計値</td></tr> 056 * </table> 057 * 058 * color は、棒グラフ要素(type="1"(横棒),"6"(縦棒))の色コードを設定します。 059 * このコードは、予め決められた色画像を呼び出しますので、任意の色が使えるという事ではありません。 060 * <table class="plain"> 061 * <caption>色番号 対応表</caption> 062 * <tr><th>色番号</th><th>設定値 </th><th>棒色 </th><th> </th><th>横棒サンプル</th><th>縦棒サンプル</th></tr> 063 * <tr><td> 0</td><td>blue </td><td>青 </td><td> </td><td style="background-image:url(../image/W_blue.png);"> </td><td style="background-image:url(../image/H_blue.png);"> </td></tr> 064 * <tr><td> 1</td><td>black </td><td>黒 </td><td> </td><td style="background-image:url(../image/W_black.png);"> </td><td style="background-image:url(../image/H_black.png);"> </td></tr> 065 * <tr><td> 2</td><td>brown </td><td>茶 </td><td> </td><td style="background-image:url(../image/W_brown.png);"> </td><td style="background-image:url(../image/H_brown.png);"> </td></tr> 066 * <tr><td> 3</td><td>green </td><td>緑 </td><td> </td><td style="background-image:url(../image/W_green.png);"> </td><td style="background-image:url(../image/H_green.png);"> </td></tr> 067 * <tr><td> 4</td><td>lightblue </td><td>薄青 </td><td> </td><td style="background-image:url(../image/W_lightblue.png);"> </td><td style="background-image:url(../image/H_lightblue.png);"> </td></tr> 068 * <tr><td> 5</td><td>lightgreen </td><td>薄緑 </td><td> </td><td style="background-image:url(../image/W_lightgreen.png);"> </td><td style="background-image:url(../image/H_lightgreen.png);"> </td></tr> 069 * <tr><td> 6</td><td>orange </td><td>オレンジ </td><td> </td><td style="background-image:url(../image/W_orange.png);"> </td><td style="background-image:url(../image/H_orange.png);"> </td></tr> 070 * <tr><td> 7</td><td>pink </td><td>ピンク </td><td> </td><td style="background-image:url(../image/W_pink.png);"> </td><td style="background-image:url(../image/H_pink.png);"> </td></tr> 071 * <tr><td> 8</td><td>purple </td><td>紫 </td><td> </td><td style="background-image:url(../image/W_purple.png);"> </td><td style="background-image:url(../image/H_purple.png);"> </td></tr> 072 * <tr><td> 9</td><td>red </td><td>赤 </td><td> </td><td style="background-image:url(../image/W_red.png);"> </td><td style="background-image:url(../image/H_red.png);"> </td></tr> 073 * <tr><td> 10</td><td>yellow </td><td>黄 </td><td> </td><td style="background-image:url(../image/W_yellow.png);"> </td><td style="background-image:url(../image/H_yellow.png);"> </td></tr> 074 * <tr><td> 11</td><td>navy </td><td>濃紺 </td><td> </td><td style="background-image:url(../image/W_navy.png);"> </td><td style="background-image:url(../image/H_navy.png);"> </td></tr> 075 * <tr><td> 12</td><td>teal </td><td>青緑 </td><td> </td><td style="background-image:url(../image/W_teal.png);"> </td><td style="background-image:url(../image/H_teal.png);"> </td></tr> 076 * <tr><td> 13</td><td>gray </td><td>灰 </td><td> </td><td style="background-image:url(../image/W_gray.png);"> </td><td style="background-image:url(../image/H_gray.png);"> </td></tr> 077 * <tr><td> 14</td><td>indigo </td><td>藍 </td><td> </td><td style="background-image:url(../image/W_indigo.png);"> </td><td style="background-image:url(../image/H_indigo.png);"> </td></tr> 078 * <tr><td> 15</td><td>slategray </td><td>鉄色 </td><td> </td><td style="background-image:url(../image/W_slategray.png);"> </td><td style="background-image:url(../image/H_slategray.png);"> </td></tr> 079 * <tr><td> 16</td><td>chocorlate </td><td>チョコレート </td><td> </td><td style="background-image:url(../image/W_chocorlate.png);"> </td><td style="background-image:url(../image/H_chocorlate.png);"> </td></tr> 080 * <tr><td> 17</td><td>darkgreen </td><td>深緑 </td><td> </td><td style="background-image:url(../image/W_darkgreen.png);"> </td><td style="background-image:url(../image/H_darkgreen.png);"> </td></tr> 081 * <tr><td> 18</td><td>violet </td><td>すみれ </td><td> </td><td style="background-image:url(../image/W_violet.png);"> </td><td style="background-image:url(../image/H_violet.png);"> </td></tr> 082 * <tr><td> 19</td><td>darkslategray</td><td>深鉄色 </td><td> </td><td style="background-image:url(../image/W_darkslategray.png);"> </td><td style="background-image:url(../image/H_darkslategray.png);"> </td></tr> 083 * <tr><td> 20</td><td>lime </td><td>緑 </td><td> </td><td style="background-image:url(../image/W_lime.png);"> </td><td style="background-image:url(../image/H_lime.png);"> </td></tr> 084 * <tr><td> 21</td><td>aqua </td><td>水色 </td><td> </td><td style="background-image:url(../image/W_aqua.png);"> </td><td style="background-image:url(../image/H_aqua.png);"> </td></tr> 085 * <tr><td> 22</td><td>maroon </td><td>ひわだいろ </td><td> </td><td style="background-image:url(../image/W_maroon.png);"> </td><td style="background-image:url(../image/H_maroon.png);"> </td></tr> 086 * <tr><td> 23</td><td>olive </td><td>オリーブ </td><td> </td><td style="background-image:url(../image/W_olive.png);"> </td><td style="background-image:url(../image/H_olive.png);"> </td></tr> 087 * <tr><td> 24</td><td>silver </td><td>銀 </td><td> </td><td style="background-image:url(../image/W_silver.png);"> </td><td style="background-image:url(../image/H_silver.png);"> </td></tr> 088 * <tr><td> 25</td><td>fuchsia </td><td>赤紫 </td><td> </td><td style="background-image:url(../image/W_fuchsia.png);"> </td><td style="background-image:url(../image/H_fuchsia.png);"> </td></tr> 089 * <tr><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td></tr> 090 * <tr><td> BK</td><td>black2 </td><td>黒 </td><td> </td><td style="background-image:url(../image/W_black2.png);"> </td><td style="background-image:url(../image/H_black2.png);"> </td></tr> 091 * <tr><td> WT</td><td>white2 </td><td>白 </td><td> </td><td style="background-image:url(../image/W_white2.png);"> </td><td style="background-image:url(../image/H_white2.png);"> </td></tr> 092 * <tr><td> BL</td><td>blue2 </td><td>青 </td><td> </td><td style="background-image:url(../image/W_blue2.png);"> </td><td style="background-image:url(../image/H_blue2.png);"> </td></tr> 093 * <tr><td> RD</td><td>red2 </td><td>赤 </td><td> </td><td style="background-image:url(../image/W_red2.png);"> </td><td style="background-image:url(../image/H_red2.png);"> </td></tr> 094 * <tr><td> YL</td><td>yellow2 </td><td>黄 </td><td> </td><td style="background-image:url(../image/W_yellow2.png);"> </td><td style="background-image:url(../image/H_yellow2.png);"> </td></tr> 095 * </table> 096 * 097 * colorNo 色番号は、色コードを直接指定するのではなく、番号で指定する場合に使用します。 098 * 棒グラフ要素(type="1"(横棒),"6"(縦棒))の色を設定します。 099 * "1~25 , BK,WT,BL,RD,YL" の色番号で指定します。 100 * 色番号は、与えた数字を内部色数で割り算した余を使用しますので、連番の場合でも 101 * 繰返し使われます。特殊な色として、BK,WT,BL,RD,YLは、番号ではなく記号で指定できます。 102 * 103 * zeroBorder は、"true" で、値がゼロの時にも、最小のバーを表示する。 104 * 105 * graphThick は、グラフのバーの幅を指定します。 106 * 107 * @og.formSample 108 * ●形式:<og:iBar ... /> 109 * ●body:なし 110 * ●前提:headタグで、adjustEvent="Bar" を指定してください。 111 * 112 * ●Tag定義: 113 * <og:iBar 114 * type ○【TAG】グラフ要素の表示形式を設定(0:ラベル表示 1:横棒 2:差分枠 6:縦棒)(必須) 115 * value ○【TAG】グラフ要素の位置、長さを設定(typeにより設定方法が異なる)(必須) 116 * baseVal 【TAG】グラフ要素の描画開始位置を設定(type=0,2の場合必須) 117 * color 【TAG】棒グラフ要素(type="1"(横棒),"6"(縦棒))の色コードを設定する。 118 * colorNo 【TAG】"1~25 , BK,WT,BL,RD,YL" の色番号を設定する。 119 * text 【TAG】バー上に表示するテキストを指定します。 120 * href 【TAG】リンク作成時の値を設定します。 121 * target 【TAG】リンク作成時のターゲット名を指定します。 122 * optionAttributes 【TAG】{kay:val,key:val} 形式で、属性を追加します。 123 * zeroBorder 【TAG】最小のバーを表示するかどうか[true/false]を指定します(初期値:false) 124 * graphThick 【TAG】グラフのバーの幅を指定します。 125 * paddingLeft 【TAG】ガントバーの間の左区切りスペースを指定します(初期値=null) 126 * paddingRigth 【TAG】ガントバーの間の右区切りスペースを指定します(初期値=null) 127 * debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) 128 * /> 129 * 130 * ●使用例 131 * <og:view command="{@command}" /> 132 * <og:tbody rowspan="1" > 133 * <tr> 134 * <og:td> 135 * <og:iBar 136 * type = "X" 137 * value = "[V1],[V2],…,[Vn]" 138 * baseVal = "[BV1],[BV2],…,[BVn]" 139 * color = "C1,C2,…,Cn" 140 * /> 141 * </td> </tr> 142 * </og:tbody> 143 * </og:view> 144 * 145 * @og.rev 5.6.3.2 (2013/04/12) 新規作成 146 * @og.group 画面部品 147 * 148 * @version 5.0 149 * @author Kazuhiko Hasegawa 150 * @since JDK1.7, 151 */ 152public class ViewIBarTag extends CommonTagSupport { 153 /** このプログラムのVERSION文字列を設定します。 {@value} */ 154 private static final String VERSION = "6.4.3.4 (2016/03/11)" ; 155 private static final long serialVersionUID = 643420160311L ; 156 157 // 6.4.3.4 (2016/03/11) String配列 から、Setに置き換えます。 158 private static final Set<String> TYPE_SET = new ArraySet<>( "0" , "1" , "2" , "6" ); 159 160 // 6.1.1.0 (2015/01/17) TagBufferの連結記述 161 private transient TagBuffer tag = new TagBuffer( "iBar" ).addBody( "<!-- -->" ); 162 163 // ページ内の iBar タグのid設定用のユニーク番号。 164 // java.util.concurrent.atomic.AtomicInteger を使うまでもない。 165 private static int tagId = 100; 166 167 /** 168 * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。 169 * 170 * @og.rev 6.0.2.5 (2014/10/31) HTML5対応。javaScriptで、BODYがないと入れ子になってしまう。 171 * 172 * @return 後続処理の指示 173 */ 174 @Override 175 public int doEndTag() { 176 debugPrint(); // 4.0.0 (2005/02/28) 177 178 tag.add( "id",getTagId() ); 179 180 // 6.1.1.0 (2015/01/17) TagBufferの連結記述 181 jspPrint( tag.makeTag() ); 182 183 return EVAL_PAGE ; // ページの残りを評価する。 184 } 185 186 /** 187 * タグリブオブジェクトをリリースします。 188 * キャッシュされて再利用されるので、フィールドの初期設定を行います。 189 * 190 */ 191 @Override 192 protected void release2() { 193 super.release2(); 194 tag = new TagBuffer( "iBar" ).addBody( "<!-- -->" ); // 6.1.1.0 (2015/01/17) TagBufferの連結記述 195 } 196 197 /** 198 * 【TAG】グラフ要素の表示形式を設定[0:ラベル表示 1:横棒 2:差分枠 6:縦棒]します。 199 * 200 * @og.tag 201 * type は、グラフ要素の表示形式を指定します。0~9 が予約語で、0,1,2,6 が現時点で実装済みです。 202 * 0:ラベル表示 1:横棒 2:差分枠 6:縦棒 203 * 204 * @og.rev 6.3.4.0 (2015/08/01) Arrays.toString から String.join に置き換え。 205 * @og.rev 6.4.3.4 (2016/03/11) String配列 から、Setに置き換えます。 206 * 207 * @param type グラフ要素の表示形式 [0:ラベル表示 1:横棒 2:差分枠 6:縦棒] 208 */ 209 public void setType( final String type ) { 210 final String tmpType = nval( getRequestParameter( type ),null ); 211 212 if( tmpType == null || !check( tmpType, TYPE_SET ) ) { 213 final String errMsg = "指定の表示形式(type)は必須か、または、指定の値のみ登録可能です。" + CR 214 + "type=[" + tmpType + "] " + CR 215 + "登録可能な値=" + String.join( ", " , TYPE_SET ) ; // 6.3.4.0 (2015/08/01) 216 throw new HybsSystemException( errMsg ); 217 } 218 219 tag.add( "type",tmpType ); 220 } 221 222 /** 223 * 【TAG】グラフ要素の位置、長さを設定します(typeにより設定方法が異なる)。 224 * 225 * @og.tag 226 * value は、グラフ要素の位置、長さを設定します。設定方法は、type 毎に異なります。 227 * baseVal は、グラフ要素の描画開始位置を設定します。 228 * type=2:差分枠 は、value > baseVal の場合は、超過を、value < baseValの場合は、不足を表します。 229 * <table class="plain"> 230 * <caption>グラフのtype別設定方法</caption> 231 * <tr><th>type</th><th>設定値 </th><th>説明 </th></tr> 232 * <tr><td>0 </td><td>[V1] </td><td>xx% または 0.xx の比率を設定する。(一つのみ), 描画位置=baseValの各カラムの合計値 * カラムV1の値</td></tr> 233 * <tr><td>1 </td><td>[V1],[V2],…,[Vn]</td><td>棒の長さ=[V1],[V2],…,[Vn]各カラムの合計値</td></tr> 234 * <tr><td>2 </td><td>[V1],[V2],…,[Vn]</td><td>描画位置=baseValの各カラムの合計値 , 差分枠の長さ=valueの各カラムの合計値 - baseValの各カラム合計値</td></tr> 235 * <tr><td>6 </td><td>[V1],[V2],…,[Vn]</td><td>棒の長さ=[V1],[V2],…,[Vn]各カラムの合計値</td></tr> 236 * </table> 237 * 238 * @param val 位置、長さ 239 */ 240 public void setValue( final String val ) { 241 final String tmpVal = nval( getRequestParameter( val ),null ); 242 243 if( tmpVal == null ) { 244 final String errMsg = "value は、必須です。"; 245 throw new HybsSystemException( errMsg ); 246 } 247 248 tag.add( "value",tmpVal ); 249 } 250 251 /** 252 * 【TAG】グラフ要素の描画開始位置を設定します。 253 * 254 * @og.tag 255 * この値は、type=0,2の場合、必須になります。 256 * type=2:差分枠 は、value > baseVal の場合は、超過を、value < baseValの場合は、不足を表します。 257 * <table class="plain"> 258 * <caption>グラフのtype別設定方法</caption> 259 * <tr><th>type</th><th>設定値 </th><th>説明 </th></tr> 260 * <tr><td>0 </td><td>[V1] </td><td>xx% または 0.xx の比率を設定する。(一つのみ) , 描画位置=baseValの各カラムの合計値 * カラムV1の値</td></tr> 261 * <tr><td>2 </td><td>[V1],[V2],…,[Vn]</td><td>描画位置=baseValの各カラムの合計値 , 差分枠の長さ=valueの各カラムの合計値 - baseValの各カラム合計値</td></tr> 262 * </table> 263 * 264 * @param bval 描画開始位置 265 */ 266 public void setBaseVal( final String bval ) { 267 tag.add( "baseVal",nval( getRequestParameter( bval ), null ) ); 268 } 269 270 /** 271 * 【TAG】棒グラフ要素(type="1"(横棒),"6"(縦棒))の色コードを設定します。 272 * 273 * @og.tag 274 * color は、棒グラフ要素(type="1"(横棒),"6"(縦棒))の色コードを設定します。 275 * このコードは、予め決められた色画像を呼び出しますので、任意の色が使えるという事ではありません。 276 * 色指定は、横棒の場合は、image/W_色コード.png で、縦棒の場合は、image/H_色コード.png の画像を使います。 277 * 色コード と 色番号が同時に指定された場合は、色コード が優先されます。 278 * 279 * type=2:差分枠 は、value > baseVal の場合は、超過を、value < baseValの場合は、不足を表します。 280 * <table class="plain"> 281 * <caption>色番号 対応表</caption> 282 * <tr><th>色番号</th><th>設定値 </th><th>棒色 </th><th> </th><th>横棒サンプル</th><th>縦棒サンプル</th></tr> 283 * <tr><td> 0</td><td>blue </td><td>青 </td><td> </td><td style="background-image:url(../image/W_blue.png);"> </td><td style="background-image:url(../image/H_blue.png);"> </td></tr> 284 * <tr><td> 1</td><td>black </td><td>黒 </td><td> </td><td style="background-image:url(../image/W_black.png);"> </td><td style="background-image:url(../image/H_black.png);"> </td></tr> 285 * <tr><td> 2</td><td>brown </td><td>茶 </td><td> </td><td style="background-image:url(../image/W_brown.png);"> </td><td style="background-image:url(../image/H_brown.png);"> </td></tr> 286 * <tr><td> 3</td><td>green </td><td>緑 </td><td> </td><td style="background-image:url(../image/W_green.png);"> </td><td style="background-image:url(../image/H_green.png);"> </td></tr> 287 * <tr><td> 4</td><td>lightblue </td><td>薄青 </td><td> </td><td style="background-image:url(../image/W_lightblue.png);"> </td><td style="background-image:url(../image/H_lightblue.png);"> </td></tr> 288 * <tr><td> 5</td><td>lightgreen </td><td>薄緑 </td><td> </td><td style="background-image:url(../image/W_lightgreen.png);"> </td><td style="background-image:url(../image/H_lightgreen.png);"> </td></tr> 289 * <tr><td> 6</td><td>orange </td><td>オレンジ </td><td> </td><td style="background-image:url(../image/W_orange.png);"> </td><td style="background-image:url(../image/H_orange.png);"> </td></tr> 290 * <tr><td> 7</td><td>pink </td><td>ピンク </td><td> </td><td style="background-image:url(../image/W_pink.png);"> </td><td style="background-image:url(../image/H_pink.png);"> </td></tr> 291 * <tr><td> 8</td><td>purple </td><td>紫 </td><td> </td><td style="background-image:url(../image/W_purple.png);"> </td><td style="background-image:url(../image/H_purple.png);"> </td></tr> 292 * <tr><td> 9</td><td>red </td><td>赤 </td><td> </td><td style="background-image:url(../image/W_red.png);"> </td><td style="background-image:url(../image/H_red.png);"> </td></tr> 293 * <tr><td> 10</td><td>yellow </td><td>黄 </td><td> </td><td style="background-image:url(../image/W_yellow.png);"> </td><td style="background-image:url(../image/H_yellow.png);"> </td></tr> 294 * <tr><td> 11</td><td>navy </td><td>濃紺 </td><td> </td><td style="background-image:url(../image/W_navy.png);"> </td><td style="background-image:url(../image/H_navy.png);"> </td></tr> 295 * <tr><td> 12</td><td>teal </td><td>青緑 </td><td> </td><td style="background-image:url(../image/W_teal.png);"> </td><td style="background-image:url(../image/H_teal.png);"> </td></tr> 296 * <tr><td> 13</td><td>gray </td><td>灰 </td><td> </td><td style="background-image:url(../image/W_gray.png);"> </td><td style="background-image:url(../image/H_gray.png);"> </td></tr> 297 * <tr><td> 14</td><td>indigo </td><td>藍 </td><td> </td><td style="background-image:url(../image/W_indigo.png);"> </td><td style="background-image:url(../image/H_indigo.png);"> </td></tr> 298 * <tr><td> 15</td><td>slategray </td><td>鉄色 </td><td> </td><td style="background-image:url(../image/W_slategray.png);"> </td><td style="background-image:url(../image/H_slategray.png);"> </td></tr> 299 * <tr><td> 16</td><td>chocorlate </td><td>チョコレート </td><td> </td><td style="background-image:url(../image/W_chocorlate.png);"> </td><td style="background-image:url(../image/H_chocorlate.png);"> </td></tr> 300 * <tr><td> 17</td><td>darkgreen </td><td>深緑 </td><td> </td><td style="background-image:url(../image/W_darkgreen.png);"> </td><td style="background-image:url(../image/H_darkgreen.png);"> </td></tr> 301 * <tr><td> 18</td><td>violet </td><td>すみれ </td><td> </td><td style="background-image:url(../image/W_violet.png);"> </td><td style="background-image:url(../image/H_violet.png);"> </td></tr> 302 * <tr><td> 19</td><td>darkslategray</td><td>深鉄色 </td><td> </td><td style="background-image:url(../image/W_darkslategray.png);"> </td><td style="background-image:url(../image/H_darkslategray.png);"> </td></tr> 303 * <tr><td> 20</td><td>lime </td><td>緑 </td><td> </td><td style="background-image:url(../image/W_lime.png);"> </td><td style="background-image:url(../image/H_lime.png);"> </td></tr> 304 * <tr><td> 21</td><td>aqua </td><td>水色 </td><td> </td><td style="background-image:url(../image/W_aqua.png);"> </td><td style="background-image:url(../image/H_aqua.png);"> </td></tr> 305 * <tr><td> 22</td><td>maroon </td><td>ひわだいろ </td><td> </td><td style="background-image:url(../image/W_maroon.png);"> </td><td style="background-image:url(../image/H_maroon.png);"> </td></tr> 306 * <tr><td> 23</td><td>olive </td><td>オリーブ </td><td> </td><td style="background-image:url(../image/W_olive.png);"> </td><td style="background-image:url(../image/H_olive.png);"> </td></tr> 307 * <tr><td> 24</td><td>silver </td><td>銀 </td><td> </td><td style="background-image:url(../image/W_silver.png);"> </td><td style="background-image:url(../image/H_silver.png);"> </td></tr> 308 * <tr><td> 25</td><td>fuchsia </td><td>赤紫 </td><td> </td><td style="background-image:url(../image/W_fuchsia.png);"> </td><td style="background-image:url(../image/H_fuchsia.png);"> </td></tr> 309 * <tr><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td></tr> 310 * <tr><td> BK</td><td>black2 </td><td>黒 </td><td> </td><td style="background-image:url(../image/W_black2.png);"> </td><td style="background-image:url(../image/H_black2.png);"> </td></tr> 311 * <tr><td> WT</td><td>white2 </td><td>白 </td><td> </td><td style="background-image:url(../image/W_white2.png);"> </td><td style="background-image:url(../image/H_white2.png);"> </td></tr> 312 * <tr><td> BL</td><td>blue2 </td><td>青 </td><td> </td><td style="background-image:url(../image/W_blue2.png);"> </td><td style="background-image:url(../image/H_blue2.png);"> </td></tr> 313 * <tr><td> RD</td><td>red2 </td><td>赤 </td><td> </td><td style="background-image:url(../image/W_red2.png);"> </td><td style="background-image:url(../image/H_red2.png);"> </td></tr> 314 * <tr><td> YL</td><td>yellow2 </td><td>黄 </td><td> </td><td style="background-image:url(../image/W_yellow2.png);"> </td><td style="background-image:url(../image/H_yellow2.png);"> </td></tr> 315 * </table> 316 * 317 * @param color 色コード 318 */ 319 public void setColor( final String color ) { 320 tag.add( "color",nval( getRequestParameter( color ),null ) ); 321 } 322 323 /** 324 * 【TAG】グラフ要素の色番号を設定します。 325 * 326 * @og.tag 327 * 色番号は、色コードを直接指定するのではなく、番号で指定する場合に使用します。 328 * 棒グラフ要素(type="1"(横棒),"6"(縦棒))の色を設定します。 329 * "1~25 , BK,WT,BL,RD,YL" の色番号で指定します。 330 * 色番号は、与えた数字を内部色数で割り算した余を使用しますので、連番の場合でも 331 * 繰返し使われます。特殊な色として、BK,WT,BL,RD,YLは、番号ではなく記号で指定できます。 332 * 色コード と 色番号が同時に指定された場合は、色コード が優先されます。 333 * 334 * @param clrNo 色番号 [1~25/BK/WT/BL/RD/YL] 335 * @see #setColor( String ) 336 */ 337 public void setColorNo( final String clrNo ) { 338 tag.add( "colorNo",nval( getRequestParameter( clrNo ),null ) ); 339 } 340 341 /** 342 * 【TAG】バー上に表示するテキストを指定します。 343 * 344 * @og.tag 345 * バーの上に、値などの文字を重ねて表示できます。 346 * 347 * @param text テキスト 348 */ 349 public void setText( final String text ) { 350 tag.add( "text",nval( getRequestParameter( text ),null ) ); 351 } 352 353 /** 354 * 【TAG】リンク作成時の値を設定します。 355 * 356 * @og.tag 357 * バーの上の文字に対して、リンクを作成できます。 358 * 359 * @param href リンク 360 * @see #setTarget( String ) 361 */ 362 public void setHref( final String href ) { 363 tag.add( "href",nval( getRequestParameter( href ),null ) ); 364 } 365 366 /** 367 * 【TAG】リンク作成時のターゲット名を指定します。 368 * 369 * @og.tag 370 * バーの上の文字に対して、リンクを作成するときの、ターゲット名を指定できます。 371 * 372 * @param target ターゲット 373 * @see #setHref( String ) 374 */ 375 public void setTarget( final String target ) { 376 tag.add( "target",nval( getRequestParameter( target ),null ) ); 377 } 378 379 /** 380 * 【TAG】既定の属性以外の属性を追加します。 381 * 382 * @og.tag 383 * {kay:val,key:val} 形式で、属性を追加します。 384 * 385 * @param optAtt 追加属性 386 */ 387 public void setOptionAttributes( final String optAtt ) { 388 tag.add( "optionAttributes",nval( getRequestParameter( optAtt ),null ) ); 389 } 390 391 /** 392 * 【TAG】最小のバーを表示するかどうか[true/false]を指定します(初期値:false)。 393 * 394 * @og.tag 395 * 設定値が、ゼロの場合に、バーを出したい場合は、true に、 396 * 何も出したくない場合は、false に設定します。 397 * 初期値は、false(バーを出さない) です。 398 * 399 * @param zeroBorder 最小のバー表示可否 [true:する/false:しない] 400 */ 401 public void setZeroBorder( final String zeroBorder ) { 402 tag.add( "zeroBorder",nval( getRequestParameter( zeroBorder ),null ) ); 403 } 404 405 /** 406 * 【TAG】グラフのバーの幅を指定します。 407 * 408 * @og.tag 409 * 何も指定しない場合は、通常のバーの画像ファイルが適用されます。 410 * 411 * @param graphThick グラフのバーの幅 412 */ 413 public void setGraphThick( final String graphThick ) { 414 tag.add( "graphThick",nval( getRequestParameter( graphThick ),null ) ); 415 } 416 417 /** 418 * 【TAG】バーの間の左区切りスペースをピクセルで指定します(初期値:null)。 419 * 420 * @og.tag 421 * バー表示で連続して同じ色で繋げる場合、くっついて表示されます。 422 * これを、区別できるように、左区切りスペースをピクセルで指定します。 423 * 424 * 初期値は、null(属性を出力しない) です。 425 * 426 * @og.rev 5.6.4.3 (2013/05/24) 新規追加 427 * 428 * @param paddingLeft 左区切りスペース 429 * @see #setPaddingRigth( String ) 430 */ 431 public void setPaddingLeft( final String paddingLeft ) { 432 tag.add( "paddingLeft",nval( getRequestParameter( paddingLeft ),null ) ); 433 } 434 435 /** 436 * 【TAG】バーの間の右区切りスペースをピクセルで指定します(初期値:null)。 437 * 438 * @og.tag 439 * バー表示で連続して同じ色で繋げる場合、くっついて表示されます。 440 * これを、区別できるように、右区切りスペースをピクセルで指定します。 441 * 442 * 初期値は、null(属性を出力しない) です。 443 * 444 * @og.rev 5.6.4.3 (2013/05/24) 新規追加 445 * 446 * @param paddingRigth 左区切りスペース 447 * @see #setPaddingLeft( String ) 448 */ 449 public void setPaddingRigth( final String paddingRigth ) { 450 tag.add( "paddingRigth",nval( getRequestParameter( paddingRigth ),null ) ); 451 } 452 453 /** 454 * iBar タグがユニークになるように id 値を返します。 455 * 456 * iBar は、レコードに複数作成されるため、まず、iBar作成都度のユニークIDと 457 * それをViewFormで展開後にユニークな番号になる様にするための行番号が組み合わされた 458 * ID が必要です。 459 * iBatXXX_[I] 形式のIDを作成します。 460 * 別スレッドによる同時アクセスで整合性が破綻(同じ番号が返る)しても、問題ありません。 461 * 462 * @return ユニークな id 値 463 */ 464 private static String getTagId() { 465 final String id = "IBar" + ( tagId++ ) + "_[I]"; 466 467 if( tagId > 999 ) { tagId = 100; } 468 469 return id ; 470 } 471 472 /** 473 * タグの名称を、返します。 474 * 自分自身のクラス名より、自動的に取り出せないため、このメソッドをオーバーライドします。 475 * 476 * @return タグの名称 477 * @og.rtnNotNull 478 */ 479 @Override 480 protected String getTagName() { 481 return "iBar" ; 482 } 483 484 /** 485 * このオブジェクトの文字列表現を返します。 486 * 基本的にデバッグ目的に使用します。 487 * 488 * @return このクラスの文字列表現 489 * @og.rtnNotNull 490 */ 491 @Override 492 public String toString() { 493 return ToString.title( this.getClass().getName() ) 494 .println( "VERSION" ,VERSION ) 495 .println( "tag" ,tag.makeTag() ) 496 .println( "Other..." ,getAttributes().getAttribute() ) 497 .fixForm().toString() ; 498 } 499}