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 */ 016 package org.opengion.hayabusa.taglib; 017 018 import org.opengion.hayabusa.common.HybsSystemException; 019 import org.opengion.fukurou.util.StringUtil; 020 import org.opengion.fukurou.util.TagBuffer; 021 022 /** 023 * ガントチャート?繰り返しタグのフォーマットに使用します? 024 * 025 * iGanttBar タグは、TDタグの繰返し部に記述することで、???ガント?タスクを作?します? 026 * これを使用する場合?、iGant タグを?体に??する?があります? 027 * 028 * @og.formSample 029 * ●形式?lt;og:iGanttBar ... /> 030 * ●body?な? 031 * ●前提:headタグで、adjustEvent="Gantt" を指定してください? 032 * 033 * ●Tag定義?? 034 * <og:iGanttBar 035 * type 【TAG】ガント要??タイプ?:マイルスト?ン 1:バ? ????) 036 * color 【TAG】バーの色??イルスト?ンの場合?不?? 037 * colorNo 【TAG】バーの色番号で?しま? 038 * src 【TAG】?イルスト?ンのアイコン画?URIより設? 039 * start 【TAG】開始日(YYYYMMDD)、また?開始時?YYYYMMDDHH24MM) 040 * end 【TAG】終?(YYYYMMDD)、また?終??YYYYMMDDHH24MM) 041 * text 【TAG】ガント要??注釈メ?ージ? 042 * href 【TAG】?力した?合?ガントにリンクを付加します? 043 * target 【TAG】hrefを指定した?合に付加されるリンクのターゲ? 044 * barLink 【TAG】hrefで付加されるリンクの?にバ?本体を含めるかど?[true/false]を指定しま?初期値?false) 045 * startInput 【保留】ガント要??開始日に紐付く入力?開始日また?終?に紐付く入力?設定しなければガント要??動かせな?? 046 * endInput 【保留】ガント要??終?に紐付く入力?開始日また?終?に紐付く入力?設定しなければガント要??動かせな?? 047 * chbox 【保留】行選択?チェ?ボックス 設定??[ROW.ID] 048 * cost 【TAG】開始日、終?を利用して積上げられる工数を指定します? 049 * capacity 【TAG】積上げの?値?キャパシ??を?します? 050 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false) 051 * /> 052 * 053 * ●使用? 054 * (通常ガン? 055 * <og:view 056 * viewFormType = "HTMLCustomTable" 057 * command = "{@command}" 058 * writable = "false" 059 * useScrollBar = "false" 060 * > 061 * <og:thead rowspan="2"> 062 * <tr> 063 * <td>[NOORDER]</td> 064 * <td rowspan="2" class="gantt zoom{@VZOOM}" style="line-height:normal;text-align:left;background-image: url('../image/ganttBG{@VZOOM}.gif');" > 065 * <div style="position:relative;left:0px;z-index:101; " height="100%" width="100%" > 066 * <og:ganttHeader 067 * startDate = "{@startDate}" 068 * endDate = "{@endDate}" 069 * zoom = "{@VZOOM}" 070 * daySpan = "{@daySpan}" 071 * /> 072 * </div> 073 * </td> 074 * </tr> 075 * </og:thead> 076 * <og:tbody rowspan="2"> 077 * <tr> 078 * <td>[NOORDER]</td> 079 * <td rowspan="2" class="gantt zoom{@VZOOM}" style="text-align:left;background-image: url('../image/ganttBG{@VZOOM}.gif');" > 080 * <og:iGanttBar type="1" colorNo="[COLOR]" start="[DYORDER]" end="[DYNOKI]" text="[PN]" /> 081 * <og:iGanttBar type="0" src="../image/dia_blue.gif" start="[DYORDER]" text="開? /> 082 * <og:iGanttBar type="0" src="../image/dia_red.gif" end="[DYNOKI]" text="終? /> 083 * </td> 084 * </tr> 085 * </og:tbody> 086 * </og:view> 087 * 088 * <og:iGantt 089 * margeRows = "true" 090 * fixedCols = "1" 091 * /> 092 * 093 * (積み上げガン? 094 * <og:view 095 * viewFormType = "HTMLStackedGanttTable" 096 * command = "{@command}" 097 * writable = "false" 098 * useScrollBar = "false" 099 * useParam = "true" 100 * numberType = "none" 101 * > 102 * <og:stackParam 103 * stackColumns = "NOORDER" 104 * /> 105 * 106 * <og:thead rowspan="2"> 107 * <tr> 108 * <td>[NOORDER]</td> 109 * <td>[PN]</td> 110 * <td rowspan="2" class="gantt zoom{@SZOOM}" style="text-align:left;background-image: url('../image/ganttBG{@SZOOM}.gif');" > 111 * <div style="position:relative;left:0px;z-index:101; " height="100%" width="100%" > 112 * <og:ganttHeader 113 * startDate = "{@startDate}" 114 * endDate = "{@endDate}" 115 * zoom = "{@SZOOM}" 116 * calDB = "GE13" 117 * arg1 = "A" 118 * /> 119 * </div> 120 * </td> 121 * </tr> 122 * </og:thead> 123 * <og:tbody rowspan="2"> 124 * <tr> 125 * <td>[NOORDER]</td> 126 * <td>[PN]</td> 127 * <td rowspan="2" class="gantt zoom{@VZOOM}" style="text-align:left;background-image: url('../image/ganttBG{@VZOOM}.gif');" > 128 * <iGanttBar type="1" colorNo="[COLOR]" start="[DYORDER]" end="[DYNOKI]" text="[COSTCLM]" 129 * cost="[COSTCLM]" capacity="[CAPACITY]" /> 130 * <og:iGanttBar type="0" src="../image/dia_blue.gif" start="[DYORDER]" text="開? /> 131 * </td> 132 * </tr> 133 * </og:tbody> 134 * </og:view> 135 * 136 * <og:iGantt 137 * margeRows = "true" 138 * fixedCols = "1" 139 * verticalShift = "false" 140 * viewGantt = "{@viewGantt}" 141 * stackHoliday = "{@stackHoliday}" 142 * useBgColor = "true" 143 * viewMode = "2" 144 * /> 145 * 146 * @og.rev 5.6.3.2 (2013/04/12) 新規作? 147 * @og.group 画面部? 148 * 149 * @version 5.0 150 * @author Kazuhiko Hasegawa 151 * @since JDK6.0, 152 */ 153 public class ViewIGanttBarTag extends CommonTagSupport { 154 //* こ?プログラ??VERSION??を設定します? {@value} */ 155 private static final String VERSION = "5.6.3.2 (2013/04/12)" ; 156 157 private static final long serialVersionUID = 563220130412L ; 158 159 private TagBuffer tag = new TagBuffer( "iGanttBar" ) ; 160 161 /** 162 * Taglibの終?グが見つかったときに処??doEndTag() ?オーバ?ライドします? 163 * 164 * @return 後続???? 165 */ 166 @Override 167 public int doEndTag() { 168 debugPrint(); // 4.0.0 (2005/02/28) 169 170 jspPrint( tag.makeTag() ); 171 172 return(EVAL_PAGE); // ペ?ジの残りを評価する? 173 } 174 175 /** 176 * タグリブオブジェクトをリリースします? 177 * キャ?ュされて再利用される?で、フィールド?初期設定を行います? 178 * 179 */ 180 @Override 181 protected void release2() { 182 super.release2(); 183 tag = new TagBuffer( "iGanttBar" ); 184 } 185 186 /** 187 * 【TAG】ガント要??タイプ?:マイルスト?ン 1:バ? ?を?しま???)? 188 * 189 * @og.tag 190 * 0:マイルスト?ン を指定すると、その日?時間)に、?ーカーがされます? 191 * ガント?ような期間ではなく?そ?ポイントを表す?に使用します? 192 * 例えば、受注日、納期 などの設定?です? 193 * start ?end どちらかの?で構いません? 194 * start を使用した場合?、指定日?時間)?前方に、endを使用した場合?? 195 * ?日?時間)?後方にマ?カーが置かれます? 196 * 197 * @param type ガント要??タイプ[0:マイルスト?ン/1:バ?] 198 */ 199 public void setType( final String type ) { 200 tag.add( "type",StringUtil.nval( getRequestParameter( type ),null ) ); 201 } 202 203 /** 204 * 【TAG】ガント要?バー??色コードを設定します? 205 * 206 * @og.tag 207 * color は、ガント要??色コードを設定します? 208 * type="0:マイルスト?ン" の場合?不要です? 209 * こ?コード?、予め決められた色画像を呼び出します?で、任意?色が使えると?事ではありません? 210 * 色??、横棒?場合?、image/W_色コー?png の画像を使?す? 211 * 色コー?と 色番号が同時に?された場合?、色コー?が優先されます? 212 * 213 * type=2:差? は、value ??baseVal の場合?、?を?value ??baseValの場合?、不足を表します? 214 * <table border="1" frame="box" rules="all"> 215 * <caption>色番号 対応表</caption> 216 * <tr><th>色番号</th><th>設定? </th><th>棒色 </th><th>?/th><th>横棒サンプル</th></tr> 217 * <tr><td> 0 </td><td>blue </td><td>? </td><td> </td><td style="background-image:url(../image/W_blue.png);"> ?/td></tr> 218 * <tr><td> 1 </td><td>black </td><td>? </td><td> </td><td style="background-image:url(../image/W_black.png);"> ?/td></tr> 219 * <tr><td> 2 </td><td>brown </td><td>茶 </td><td> </td><td style="background-image:url(../image/W_brown.png);"> ?/td></tr> 220 * <tr><td> 3 </td><td>green </td><td>? </td><td> </td><td style="background-image:url(../image/W_green.png);"> ?/td></tr> 221 * <tr><td> 4 </td><td>lightblue </td><td>? </td><td> </td><td style="background-image:url(../image/W_lightblue.png);"> ?/td></tr> 222 * <tr><td> 5 </td><td>lightgreen</td><td>?? </td><td> </td><td style="background-image:url(../image/W_lightgreen.png);"> ?/td></tr> 223 * <tr><td> 6 </td><td>orange </td><td>オレンジ</td><td> </td><td style="background-image:url(../image/W_orange.png);"> ?/td></tr> 224 * <tr><td> 7 </td><td>pink </td><td>ピンク </td><td> </td><td style="background-image:url(../image/W_pink.png);"> ?/td></tr> 225 * <tr><td> 8 </td><td>purple </td><td>紫 </td><td> </td><td style="background-image:url(../image/W_purple.png);"> ?/td></tr> 226 * <tr><td> 9 </td><td>red </td><td>赤 </td><td> </td><td style="background-image:url(../image/W_red.png);"> ?/td></tr> 227 * <tr><td> 10 </td><td>yellow </td><td>? </td><td> </td><td style="background-image:url(../image/W_yellow.png);"> ?/td></tr> 228 * <tr><td> 11 </td><td>navy </td><td>? </td><td> </td><td style="background-image:url(../image/W_navy.png);"> ?/td></tr> 229 * <tr><td> 12 </td><td>teal </td><td>青? </td><td> </td><td style="background-image:url(../image/W_teal.png);"> ?/td></tr> 230 * <tr><td> 13 </td><td>gray </td><td>灰 </td><td> </td><td style="background-image:url(../image/W_gray.png);"> ?/td></tr> 231 * <tr><td> 14 </td><td>indigo </td><td>? </td><td> </td><td style="background-image:url(../image/W_indigo.png);"> ?/td></tr> 232 * <tr><td> 15 </td><td>slategray </td><td>? </td><td> </td><td style="background-image:url(../image/W_slategray.png);"> ?/td></tr> 233 * <tr><td> 16 </td><td>chocorlate</td><td>チョコレー?/td><td> </td><td style="background-image:url(../image/W_chocorlate.png);"> ?/td></tr> 234 * <tr><td> 17 </td><td>darkgreen </td><td>深? </td><td> </td><td style="background-image:url(../image/W_darkgreen.png);"> ?/td></tr> 235 * <tr><td> 18 </td><td>violet </td><td>すみ?</td><td> </td><td style="background-image:url(../image/W_violet.png);"> ?/td></tr> 236 * <tr><td> 19 </td><td>darkslategray</td><td>深?</td><td> </td><td style="background-image:url(../image/W_darkslategray.png);"> ?/td></tr> 237 * <tr><td> 20 </td><td>lime </td><td>? </td><td> </td><td style="background-image:url(../image/W_lime.png);"> ?/td></tr> 238 * <tr><td> 21 </td><td>aqua </td><td>水色 </td><td> </td><td style="background-image:url(../image/W_aqua.png);"> ?/td></tr> 239 * <tr><td> 22 </td><td>maroon </td><td>ひわだ?</td><td> </td><td style="background-image:url(../image/W_maroon.png);"> ?/td></tr> 240 * <tr><td> 23 </td><td>olive </td><td>オリー?/td><td> </td><td style="background-image:url(../image/W_olive.png);"> ?/td></tr> 241 * <tr><td> 24 </td><td>silver </td><td>? </td><td> </td><td style="background-image:url(../image/W_silver.png);"> ?/td></tr> 242 * <tr><td> 25 </td><td>fuchsia </td><td>赤紫 </td><td> </td><td style="background-image:url(../image/W_fuchsia.png);"> ?/td></tr> 243 * <tr><td colspan="6"> </td></tr> 244 * <tr><td> BK </td><td>black2 </td><td>? </td><td> </td><td style="background-image:url(../image/W_black2.png);"> ?/td></tr> 245 * <tr><td> WT </td><td>white2 </td><td>白 </td><td> </td><td style="background-image:url(../image/W_white2.png);"> ?/td></tr> 246 * <tr><td> BL </td><td>blue2 </td><td>? </td><td> </td><td style="background-image:url(../image/W_blue2.png);"> ?/td></tr> 247 * <tr><td> RD </td><td>red2 </td><td>赤 </td><td> </td><td style="background-image:url(../image/W_red2.png);"> ?/td></tr> 248 * <tr><td> YL </td><td>yellow2 </td><td>? </td><td> </td><td style="background-image:url(../image/W_yellow2.png);"> ?/td></tr> 249 * </table> 250 * 251 * @param color グラフ要??位置?? 252 */ 253 public void setColor( final String color ) { 254 tag.add( "color",StringUtil.nval( getRequestParameter( color ),null ) ); 255 } 256 257 /** 258 * 【TAG】グラフ要??色番号を設定します? 259 * 260 * @og.tag 261 * 色番号は、色コードを直接?する?ではなく?番号で?する?合に使用します? 262 * 棒グラフ要??ype="1"(横?,"6"(縦???色を設定します? 263 * "1??5 , BK,WT,BL,RD,YL" の色番号で?します? 264 * 色番号は、与えた数字を?色数で割り算した余を使用します?で??番の場合で? 265 * 繰返し使われます?特殊な色として、BK,WT,BL,RD,YLは、番号ではなく記号で?できます? 266 * 色コー?と 色番号が同時に?された場合?、色コー?が優先されます? 267 * 268 * @param clrNo グラフ要??描画開始位置 269 * @see #setColor( String ) 270 */ 271 public void setColorNo( final String clrNo ) { 272 tag.add( "colorNo",StringUtil.nval( getRequestParameter( clrNo ),null ) ); 273 } 274 275 /** 276 * 【TAG】?イルスト?ンのアイコン画?URIより設?を設定します? 277 * 278 * @og.tag 279 * type="0:マイルスト?ン" の場合?表示するアイコンイメージの?を指定します? 280 * 例?../image/xxx.png" 281 * 282 * @param src マイルスト?ンのアイコン画? 283 */ 284 public void setSrc( final String src ) { 285 tag.add( "src",StringUtil.nval( getRequestParameter( src ),null ) ); 286 } 287 288 /** 289 * 【TAG】開始日(YYYYMMDD)、また?開始時?YYYYMMDDHH24MM)を設定します? 290 * 291 * @og.tag 292 * type="1:バ?" の場合?、バー表示の場合?書き始め?開始)を?します? 293 * こ?値は、バーでは、?含??になります? 294 * type="0:マイルスト?ン" の場合?、?イルストンを左端に表示します? 295 * 296 * @param start 開始日(YYYYMMDD)、また?開始時?YYYYMMDDHH24MM) 297 * @see #setType( String ) 298 * @see #setEnd( String ) 299 */ 300 public void setStart( final String start ) { 301 tag.add( "start",StringUtil.nval( getRequestParameter( start ),null ) ); 302 } 303 304 /** 305 * 【TAG】終?(YYYYMMDD)、また?終??YYYYMMDDHH24MM)を設定します? 306 * 307 * @og.tag 308 * type="1:バ?" の場合?、バー表示の場合?書き終わり(終?を?します? 309 * こ?値は、日付か時刻かで「含??/「含まな??が異なります? 310 * 日付?場合?、この値を?含??です?例えば?/12 を指定した?合?4/12は含みます? 311 * 時刻の場合?、?含まな??です?4/12 070000 を指定した?合?、午?時?含まな??で? 312 * ?時?9??9秒までのバ?が引かれます? 313 * type="0:マイルスト?ン" の場合?、?イルストンを右端に表示します? 314 * 315 * @param end 終?(YYYYMMDD)、また?終??YYYYMMDDHH24MM) 316 * @see #setType( String ) 317 * @see #setStart( String ) 318 */ 319 public void setEnd( final String end ) { 320 tag.add( "end",StringUtil.nval( getRequestParameter( end ),null ) ); 321 } 322 323 /** 324 * 【TAG】バー上に表示する?ストを?します? 325 * 326 * @og.tag 327 * バ?の上に、?などの?を重?て表示できます? 328 * 329 * @param text バ?上に表示する?ス? 330 */ 331 public void setText( final String text ) { 332 tag.add( "text",StringUtil.nval( getRequestParameter( text ),null ) ); 333 } 334 335 /** 336 * 【TAG】リンク作?時?値を設定します? 337 * 338 * @og.tag 339 * バ?の上??に対して、リンクを作?できます? 340 * 341 * @param href バ?上に表示する?ス? 342 * @see #setTarget( String ) 343 */ 344 public void setHref( final String href ) { 345 tag.add( "href",StringUtil.nval( getRequestParameter( href ),null ) ); 346 } 347 348 /** 349 * 【TAG】リンク作?時?ターゲ?名を?します? 350 * 351 * @og.tag 352 * バ?の上??に対して、リンクを作?するとき?、ターゲ?名を?できます? 353 * 354 * @param target リンク作?時?ターゲ? 355 * @see #setHref( String ) 356 */ 357 public void setTarget( final String target ) { 358 tag.add( "target",StringUtil.nval( getRequestParameter( target ),null ) ); 359 } 360 361 /** 362 * 【TAG】hrefで付加されるリンクの?にバ?本体を含めるかど?[true/false]を指定しま?初期値?false)? 363 * 364 * @og.tag 365 * true を指定すると、hrefで付加されるリンクの?にバ?本体を含めます? 366 * 367 * @param barLink リンクの?にバ?本体を含めるかど?[true/false] 368 * @see #setHref( String ) 369 */ 370 public void setBarLink( final String barLink ) { 371 tag.add( "barLink",StringUtil.nval( getRequestParameter( barLink ),null ) ); 372 } 373 374 /** 375 * 【保留】ガント要??開始日に紐付く入力??します? 376 * 377 * @og.tag 378 * こ?入力?な?、ガント要??動かせません? 379 * 380 * @param startInput 開始日に紐付く入力? 381 * @see #setStart( String ) 382 */ 383 public void setStartInput( final String startInput ) { 384 tag.add( "startInput",StringUtil.nval( getRequestParameter( startInput ),null ) ); 385 } 386 387 /** 388 * 【保留】ガント要??終?に紐付く入力??します? 389 * 390 * @og.tag 391 * こ?入力?な?、ガント要??動かせません? 392 * 393 * @param endInput 終?に紐付く入力? 394 * @see #setEnd( String ) 395 */ 396 public void setEndInput( final String endInput ) { 397 tag.add( "endInput",StringUtil.nval( getRequestParameter( endInput ),null ) ); 398 } 399 400 /** 401 * 【TAG】行選択?チェ?ボックスを指定します? 402 * 403 * @og.tag 404 * 例えば、[ROW.ID] を指定する事で?択行を?する事ができます? 405 * 406 * @param chbox 行選択?チェ?ボックス 407 */ 408 public void setChbox( final String chbox ) { 409 tag.add( "chbox",StringUtil.nval( getRequestParameter( chbox ),null ) ); 410 } 411 412 /** 413 * 【TAG】積み上げガント?工数を指定します? 414 * 415 * @og.tag 416 * 積み上げガント?工数を指定します? 417 * 開始日、終?を利用して積上げ計算されます? 418 * 419 * @param cost 積み上げガント?工数 420 */ 421 public void setCost( final String cost ) { 422 tag.add( "cost",StringUtil.nval( getRequestParameter( cost ),null ) ); 423 } 424 425 /** 426 * 【TAG】積上げの?値?キャパシ??を?します? 427 * 428 * @og.tag 429 * ?値を?た?合?、?ーカーされます? 430 * 431 * @param capacity 積み上げガント?工数 432 */ 433 public void setCapacity( final String capacity ) { 434 tag.add( "capacity",StringUtil.nval( getRequestParameter( capacity ),null ) ); 435 } 436 437 /** 438 * タグの名称を?返します? 439 * 自??身のクラス名より?自動的に取り出せな?め?こ?メソ?をオーバ?ライドします? 440 * 441 * @return タグの名称 442 */ 443 @Override 444 protected String getTagName() { 445 return "iGanttBar" ; 446 } 447 448 /** 449 * こ?オブジェクト???表現を返します? 450 * 基本???目?使用します? 451 * 452 * @return こ?クラスの??表現 453 */ 454 @Override 455 public String toString() { 456 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 457 .println( "VERSION" ,VERSION ) 458 .println( "tag" ,tag.makeTag() ) 459 .println( "Other..." ,getAttributes().getAttribute() ) 460 .fixForm().toString() ; 461 } 462 }