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 * iGantt タグは、ガントチャート?体に??する事で、最大行数、固定カラ?? 026 * 番号列?出力有無を指定する?に使用されます? 027 * 通常は、単独で使用するのではなく?iGanttBar タグと?合わせて使用します? 028 * 通常の view タグの後に記述します? 029 * 030 * ガントには??常のガントと積上ガント??積上ガントがあります? 031 * 通常ガント???常の view をガント化します? 032 * 積上ガント?、ViewにHTMLstackedGanttTableを指定する?があります? 033 * こ?方式?利点は、積上と通常のガントバーを混在できることです?例えば、物件予定をガントバーで、表示し? 034 * 個人の予定工数を積上るなどの表示が可能です?ただし?件数が多いと、??時間がかかります? 035 * ?積上ガント?、エンジン?で積上計算します?で、???早??ですが、ガントバーとの 036 * 混在ができません。これらは、うまく使??けを行う?があります? 037 * 038 * @og.formSample 039 * ●形式?lt;og:iGantt ... /> 040 * ●body?な? 041 * ●前提:headタグで、adjustEvent="Gantt" を指定してください? 042 * 043 * ●Tag定義?? 044 * <og:iGantt 045 * margeRows 【TAG】前後?行データが??して?場合?マ?ジするかど?[true/false]?しま?初期値:false) 046 * fixedCols 【TAG】左の固定?の列数?テーブル??割機??を?しま? 047 * viewNumberType 【TAG】viewタグの出力に番号列が出力されて?かかど???力されて????deleteを指定? 048 * verticalShift 【TAG】ガント?上下ずらし表示を行うかど?[true/false]?しま?初期値=true:行う) 049 * paddingLeft 【TAG】ガントバーの間?左区?スペ?スを指定しま?初期値=null) 050 * paddingRigth 【TAG】ガントバーの間?右区?スペ?スを指定しま?初期値=null) 051 * useBgColor 【TAG】?の背景色の縞?模様を再作?するか[true/false]?します?argeRows='true'の場合?使用する?? 052 * viewGantt 【TAG】積上ガン?ガント部??表示を行うかど?[true/false]?しま?初期値=true:表示する) 053 * stackHoliday 【TAG】積上ガン?休日に積上げるかど?[true/false]?します?oom=DAYの場合?み有効。?期?=true:積上げ? 054 * viewMode 【TAG】積上ガン?1:行??値を基準に積上げ高さの計算を行う/0:能力設定?を基準に積上げ高さの計算を行う? 055 * stdUpper 【TAG】積上ガン?正常?の上限となる工数です?これを?ると積上げの色が変化しま?初期値:1) 056 * stdCost 【TAG】積上ガン?こ?工数が行?2/3の高さとなりま?初期値:1) 057 * stdLower 【TAG】積上ガン?正常?の下限となる工数です?これを下回ると積上げの色が変化しま?初期値:0) 058 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false) 059 * /> 060 * 061 * ●使用? 062 * (通常ガン? 063 * <og:view 064 * viewFormType = "HTMLCustomTable" 065 * command = "{@command}" 066 * writable = "false" 067 * useScrollBar = "false" 068 * > 069 * <og:thead rowspan="2"> 070 * <tr> 071 * <td>[NOORDER]</td> 072 * <td rowspan="2" class="gantt zoom{@VZOOM}" style="line-height:normal;text-align:left;background-image: url('../image/ganttBG{@VZOOM}.gif');" > 073 * <div style="position:relative;left:0px;z-index:101; " height="100%" width="100%" > 074 * <og:ganttHeader 075 * startDate = "{@startDate}" 076 * endDate = "{@endDate}" 077 * zoom = "{@VZOOM}" 078 * daySpan = "{@daySpan}" 079 * /> 080 * </div> 081 * </td> 082 * </tr> 083 * </og:thead> 084 * <og:tbody rowspan="2"> 085 * <tr> 086 * <td>[NOORDER]</td> 087 * <td rowspan="2" class="gantt zoom{@VZOOM}" style="text-align:left;background-image: url('../image/ganttBG{@VZOOM}.gif');" > 088 * <og:iGanttBar type="1" colorNo="[COLOR]" start="[DYORDER]" end="[DYNOKI]" msg="[PN]" /> 089 * <og:iGanttBar type="0" src="../image/dia_blue.gif" start="[DYORDER]" msg="開? /> 090 * <og:iGanttBar type="0" src="../image/dia_red.gif" end="[DYNOKI]" msg="終? /> 091 * </td> 092 * </tr> 093 * </og:tbody> 094 * </og:view> 095 * 096 * <og:iGantt 097 * margeRows = "true" 098 * fixedCols = "1" 099 * /> 100 * 101 * (積上ガン? 102 * 積上ガントを利用する場合?、ViewにHTMLstackedGanttTableを利用する?があります? 103 * <og:view 104 * viewFormType = "HTMLStackedGanttTable" 105 * command = "{@command}" 106 * writable = "false" 107 * useScrollBar = "false" 108 * useParam = "true" 109 * numberType = "none" 110 * > 111 * <og:stackParam 112 * stackColumns = "NOORDER" 113 * /> 114 * 115 * <og:thead rowspan="2"> 116 * <tr> 117 * <td>[NOORDER]</td> 118 * <td>[PN]</td> 119 * <td rowspan="2" class="gantt zoom{@SZOOM}" style="text-align:left;background-image: url('../image/ganttBG{@SZOOM}.gif');" > 120 * <div style="position:relative;left:0px;z-index:101; " height="100%" width="100%" > 121 * <og:ganttHeader 122 * startDate = "{@startDate}" 123 * endDate = "{@endDate}" 124 * zoom = "{@SZOOM}" 125 * calDB = "GE13" 126 * arg1 = "A" 127 * /> 128 * </div> 129 * </td> 130 * </tr> 131 * </og:thead> 132 * <og:tbody rowspan="2"> 133 * <tr> 134 * <td>[NOORDER]</td> 135 * <td>[PN]</td> 136 * <td rowspan="2" class="gantt zoom{@VZOOM}" style="text-align:left;background-image: url('../image/ganttBG{@VZOOM}.gif');" > 137 * <og:iGanttBar type="1" colorNo="[COLOR]" start="[DYORDER]" end="[DYNOKI]" msg="[COSTCLM]" 138 * cost="[COSTCLM]" capacity="[CAPACITY]" /> 139 * <og:iGanttBar type="0" src="../image/dia_blue.gif" start="[DYORDER]" msg="開? /> 140 * </td> 141 * </tr> 142 * </og:tbody> 143 * </og:view> 144 * 145 * <og:iGantt 146 * margeRows = "true" 147 * fixedCols = "1" 148 * verticalShift = "false" 149 * viewGantt = "{@viewGantt}" 150 * stackHoliday = "{@stackHoliday}" 151 * useBgColor = "true" 152 * viewMode = "2" 153 * /> 154 * 155 * @og.rev 5.6.3.2 (2013/04/12) 新規作? 156 * @og.group 画面部? 157 * 158 * @version 5.0 159 * @author Kazuhiko Hasegawa 160 * @since JDK6.0, 161 */ 162 public class ViewIGanttTag extends CommonTagSupport { 163 //* こ?プログラ??VERSION??を設定します? {@value} */ 164 private static final String VERSION = "5.6.4.2 (2013/05/17)" ; 165 166 private static final long serialVersionUID = 564220130517L ; 167 168 private TagBuffer tag = new TagBuffer( "iGantt" ) ; 169 170 /** 171 * Taglibの終?グが見つかったときに処??doEndTag() ?オーバ?ライドします? 172 * 173 * @return 後続???? 174 */ 175 @Override 176 public int doEndTag() { 177 debugPrint(); // 4.0.0 (2005/02/28) 178 179 jspPrint( tag.makeTag() ); 180 181 return(EVAL_PAGE); // ペ?ジの残りを評価する? 182 } 183 184 /** 185 * タグリブオブジェクトをリリースします? 186 * キャ?ュされて再利用される?で、フィールド?初期設定を行います? 187 * 188 */ 189 @Override 190 protected void release2() { 191 super.release2(); 192 tag = new TagBuffer( "iGantt" ); 193 } 194 195 /** 196 * 【TAG】前後?行データが??して?場合?マ?ジするかど?[true/false]?しま?初期値:false) 197 * 198 * @og.tag 199 * これは、ガントデータが同?ループ?場合に、ガントとして??に表示するようにします? 200 * こ?段階では?段並べのままです? 201 * 前後に付ける?合(??表示??、verticalShift = "true" を指定してください? 202 * (adjustGanttTable.jsの)初期値は、false:行わな?です? 203 * 204 * @param margeRows ?行?マ?ジを行うかど?[true/false] 205 * @see #setVerticalShift( String ) 206 */ 207 public void setMargeRows( final String margeRows ) { 208 tag.add( "margeRows",StringUtil.nval( getRequestParameter( margeRows ),null ) ); 209 } 210 211 /** 212 * 【TAG】左の固定?の列数?テーブル??割機??を?します? 213 * 214 * @og.tag 215 * ?段?も2段?も?固定したいカラ?を指定します? 216 * 217 * @param fixedCols 固定したいカラ? 218 */ 219 public void setFixedCols( final String fixedCols ) { 220 tag.add( "fixedCols",StringUtil.nval( getRequestParameter( fixedCols ),null ) ); 221 } 222 223 /** 224 * 【TAG】viewタグの出力に番号列が出力されて?かど???力されて????delete?を?します? 225 * 226 * @og.tag 227 * viewタグで、numberType属?で、行番号を表示しな?定を行った?合?ここでも?viewNumberType="delete" ? 228 * ?する?があります? 229 * 230 * @param viewNumberType viewタグの番号列が出力されて?かかど? 231 */ 232 public void setViewNumberType( final String viewNumberType ) { 233 tag.add( "viewNumberType",StringUtil.nval( getRequestParameter( viewNumberType ),null ) ); 234 } 235 236 /** 237 * 【TAG】ガント?上下ずらし表示を行うかど?[true/false]?しま?初期値=true:行う) 238 * 239 * @og.tag 240 * 通常のガント表示では、データは階段並べで表示されます? 241 * 同??のガントを横??に表示した??合?、この属?に?true" を指定します? 242 * (adjustGanttTable.jsの)初期値は、true:行う です? 243 * 244 * @param verticalShift 上下ずらし表示を行うかど?[true/false] 245 */ 246 public void setVerticalShift( final String verticalShift ) { 247 tag.add( "verticalShift",StringUtil.nval( getRequestParameter( verticalShift ), null ) ); 248 } 249 250 /** 251 * 【TAG】ガントバーの間?左区?スペ?スをピクセルで?しま?初期値:null) 252 * 253 * @og.tag 254 * ガント表示で、margeRows="true" (?行?マ?ジを行う)場合?前後?ガントが同?の 255 * 場合?くっつ?表示されます?これを?verticalShift="true" (ガント?上下ずらし表示を行う) 256 * 場合?、???バ?が判別可能ですが、そ?たくな?ースでは、???判別ができません? 257 * そこで、特殊なケースとして、???判別が付く様に、ガントバーの長さを調整した?ース? 258 * あります? 259 * 260 * こ?属?は、バーの左に??空?用意します? 261 * 初期値は、null(属?を?力しな? です? 262 * 263 * @og.rev 5.6.4.2 (2013/05/17) 新規追? 264 * 265 * @param paddingLeft 左区?スペ?ス 266 * @see #setPaddingRigth( String ) 267 */ 268 public void setPaddingLeft( final String paddingLeft ) { 269 tag.add( "paddingLeft",StringUtil.nval( getRequestParameter( paddingLeft ),null ) ); 270 } 271 272 /** 273 * 【TAG】ガントバーの間?右区?スペ?スをピクセルで?しま?初期値:null) 274 * 275 * @og.tag 276 * ガント表示で、margeRows="true" (?行?マ?ジを行う)場合?前後?ガントが同?の 277 * 場合?くっつ?表示されます?これを?verticalShift="true" (ガント?上下ずらし表示を行う) 278 * 場合?、???バ?が判別可能ですが、そ?たくな?ースでは、???判別ができません? 279 * そこで、特殊なケースとして、???判別が付く様に、ガントバーの長さを調整した?ース? 280 * あります? 281 * 282 * こ?属?は、バーの右に??空?用意します? 283 * 初期値は、null(属?を?力しな? です? 284 * 285 * @og.rev 5.6.4.2 (2013/05/17) 新規追? 286 * 287 * @param paddingRigth 左区?スペ?ス 288 * @see #setPaddingLeft( String ) 289 */ 290 public void setPaddingRigth( final String paddingRigth ) { 291 tag.add( "paddingRigth",StringUtil.nval( getRequestParameter( paddingRigth ),null ) ); 292 } 293 294 /** 295 * 【TAG】積上ガン?ガント部??表示を行うかど?[true/false]?しま?初期値=true:表示する) 296 * 297 * @og.tag 298 * falseとするとガント部?表示せず、積上げのみ表示します? 299 * (adjustGanttTable.jsの)初期値は、true:表示する? 300 * 301 * @param viewGantt ガント部??表示を行うかど?[true/false] 302 */ 303 public void setViewGantt( final String viewGantt ) { 304 tag.add( "viewGantt",StringUtil.nval( getRequestParameter( viewGantt ), null ) ); 305 } 306 307 /** 308 * 【TAG】積上ガン?休日に積上げるかど?[true/false]?します(?期?=true:積上げ? 309 * 310 * @og.tag 311 * 休日に積上る場合?平日、休日を合わせた日数で、工数の平準化が行われます? 312 * false:積上な?を指定した?合?平日のみで工数が加算されます? 313 * 積上?、日付関係?場?zoom=DAY)のみ有効で、時間単位?積上機?はありません? 314 * (adjustGanttTable.jsの)初期値は、true:積上げる? 315 * 316 * @param stackHoliday ガント?表示を行うかど?[true/false] 317 */ 318 public void setStackHoliday( final String stackHoliday ) { 319 tag.add( "stackHoliday",StringUtil.nval( getRequestParameter( stackHoliday ), null ) ); 320 } 321 322 /** 323 * 【TAG】?の背景色の縞?模様を再作?するか[true/false]?しま?初期値:true) 324 * 325 * @og.tag 326 * 背景色の縞?模?ゼブラ模?を作?する場合??true" にセ?します? 327 * margeRows='true'の場合?使用します? 328 * (adjustGanttTable.jsの)初期値は、true:再作?する? 329 * 330 * @param useBgColor 背景色ゼブラを行うかど?[true/false] 331 * @see #setMargeRows( String ) 332 */ 333 public void setUseBgColor( final String useBgColor ) { 334 tag.add( "useBgColor",StringUtil.nval( getRequestParameter( useBgColor ), null ) ); 335 } 336 337 /** 338 * 【TAG】積上ガン?積上げ高さの計算方法[0:設定?基?1:?値基準]?します(?期?:1:?値基準? 339 * 340 * @og.tag 341 * 積上ガント?大きさを?設定?を基準にするか??値を基準にするか指定します? 342 * 1:?値基準??さ固定と?られます?つまり?積上ガント???.0の場合? 343 * 設定?が?0.1 なら?0.1 ??値としてつみあがります??00??の表示に適して?す? 344 * 0:設定?基準??さ可変です?つまり?積上ガント?設定?の??0.2 の場合? 345 * 0.1 なら?半?の?で積みあがります?値に?値がなく??上結果の相対レベル? 346 * 見た??合に?して?す? 347 * 348 * 0:能力設定?を基準に積上げ高さの計算を行う? 349 * 1:行??値を基準に積上げ高さの計算を行う? 350 * (adjustGanttTable.jsの)初期値は?:?値基?です? 351 * 352 * @param viewMode 積上げ高さの計算方法[0:設定?基?1:?値基準] 353 */ 354 public void setViewMode( final String viewMode ) { 355 tag.add( "viewMode",StringUtil.nval( getRequestParameter( viewMode ),null ) ); 356 } 357 358 /** 359 * 【TAG】積上ガン?正常?の上限となる工数を指定しま?初期値:1)? 360 * 361 * @og.tag 362 * 正常?の上限となる工数を?ると積上げの色が変化します? 363 * (adjustGanttTable.jsの)初期値は? です? 364 * 365 * @param stdUpper 正常?の上限となる工数 366 * @see #setStdCost( String ) 367 */ 368 public void setStdUpper( final String stdUpper ) { 369 tag.add( "stdUpper",StringUtil.nval( getRequestParameter( stdUpper ),null ) ); 370 } 371 372 /** 373 * 【TAG】積上ガン?行?2/3の高さとなる工数を指定しま?初期値:1)? 374 * 375 * @og.tag 376 * 正常?の上限を?期?の "1" に設定し、この値を?期?の "1" を使?? 377 * "1" の高さは、行?2/3の高さになるよ?計算されます?つまり?オーバ???? 378 * 全体? 1/3 以下?場合に、ち?ど良?じになります? 379 * オーバ?する量との関係で?します? 380 * (adjustGanttTable.jsの)初期値は? です? 381 * 382 * @param stdCost 行?2/3の高さとなる工数 383 * @see #setStdUpper( String ) 384 */ 385 public void setStdCost( final String stdCost ) { 386 tag.add( "stdCost",StringUtil.nval( getRequestParameter( stdCost ),null ) ); 387 } 388 389 /** 390 * 【TAG】積上ガン?正常?の下限となる工数を指定しま?初期値:0)? 391 * 392 * @og.tag 393 * 正常?の下限となる工数を下回ると積上げの色が変化します? 394 * (adjustGanttTable.jsの)初期値は? です? 395 * 396 * @param stdLower 背景色ゼブラを行うかど?[true/false] 397 */ 398 public void setStdLower( final String stdLower ) { 399 tag.add( "stdLower",StringUtil.nval( getRequestParameter( stdLower ),null ) ); 400 } 401 402 /** 403 * タグの名称を?返します? 404 * 自??身のクラス名より?自動的に取り出せな?め?こ?メソ?をオーバ?ライドします? 405 * 406 * @return タグの名称 407 */ 408 @Override 409 protected String getTagName() { 410 return "iGantt" ; 411 } 412 413 /** 414 * こ?オブジェクト???表現を返します? 415 * 基本???目?使用します? 416 * 417 * @return こ?クラスの??表現 418 */ 419 @Override 420 public String toString() { 421 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 422 .println( "VERSION" ,VERSION ) 423 .println( "tag" ,tag.makeTag() ) 424 .println( "Other..." ,getAttributes().getAttribute() ) 425 .fixForm().toString() ; 426 } 427 }