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 * @og.rev 5.8.1.0 (2014/11/07) HTML5対応?javaScriptで、BODYがな?入れ子になってしま??
165 * @return 後続????
166 */
167 @Override
168 public int doEndTag() {
169 debugPrint(); // 4.0.0 (2005/02/28)
170
171 tag.setBody( "<!-- -->" ); // 5.8.1.0 (2014/11/07) HTML5対応?
172 jspPrint( tag.makeTag() );
173
174 return(EVAL_PAGE); // ペ?ジの残りを評価する?
175 }
176
177 /**
178 * タグリブオブジェクトをリリースします?
179 * キャ?ュされて再利用される?で、フィールド?初期設定を行います?
180 *
181 */
182 @Override
183 protected void release2() {
184 super.release2();
185 tag = new TagBuffer( "iGanttBar" );
186 }
187
188 /**
189 * 【TAG】ガント要??タイプ?:マイルスト?ン 1:バ? ?を?しま???)?
190 *
191 * @og.tag
192 * 0:マイルスト?ン を指定すると、その日?時間)に、?ーカーがされます?
193 * ガント?ような期間ではなく?そ?ポイントを表す?に使用します?
194 * 例えば、受注日、納期 などの設定?です?
195 * start ?end どちらかの?で構いません?
196 * start を使用した場合?、指定日?時間)?前方に、endを使用した場合??
197 * ?日?時間)?後方にマ?カーが置かれます?
198 *
199 * @param type ガント要??タイプ[0:マイルスト?ン/1:バ?]
200 */
201 public void setType( final String type ) {
202 tag.add( "type",StringUtil.nval( getRequestParameter( type ),null ) );
203 }
204
205 /**
206 * 【TAG】ガント要?バー??色コードを設定します?
207 *
208 * @og.tag
209 * color は、ガント要??色コードを設定します?
210 * type="0:マイルスト?ン" の場合?不要です?
211 * こ?コード?、予め決められた色画像を呼び出します?で、任意?色が使えると?事ではありません?
212 * 色??、横棒?場合?、image/W_色コー?png の画像を使?す?
213 * 色コー?と 色番号が同時に?された場合?、色コー?が優先されます?
214 *
215 * type=2:差? は、value ??baseVal の場合?、?を?value ??baseValの場合?、不足を表します?
216 * <table border="1" frame="box" rules="all">
217 * <caption>色番号 対応表</caption>
218 * <tr><th>色番号</th><th>設定? </th><th>棒色 </th><th>?/th><th>横棒サンプル</th></tr>
219 * <tr><td> 0 </td><td>blue </td><td>? </td><td> </td><td style="background-image:url(../image/W_blue.png);"> ?/td></tr>
220 * <tr><td> 1 </td><td>black </td><td>? </td><td> </td><td style="background-image:url(../image/W_black.png);"> ?/td></tr>
221 * <tr><td> 2 </td><td>brown </td><td>茶 </td><td> </td><td style="background-image:url(../image/W_brown.png);"> ?/td></tr>
222 * <tr><td> 3 </td><td>green </td><td>? </td><td> </td><td style="background-image:url(../image/W_green.png);"> ?/td></tr>
223 * <tr><td> 4 </td><td>lightblue </td><td>? </td><td> </td><td style="background-image:url(../image/W_lightblue.png);"> ?/td></tr>
224 * <tr><td> 5 </td><td>lightgreen</td><td>?? </td><td> </td><td style="background-image:url(../image/W_lightgreen.png);"> ?/td></tr>
225 * <tr><td> 6 </td><td>orange </td><td>オレンジ</td><td> </td><td style="background-image:url(../image/W_orange.png);"> ?/td></tr>
226 * <tr><td> 7 </td><td>pink </td><td>ピンク </td><td> </td><td style="background-image:url(../image/W_pink.png);"> ?/td></tr>
227 * <tr><td> 8 </td><td>purple </td><td>紫 </td><td> </td><td style="background-image:url(../image/W_purple.png);"> ?/td></tr>
228 * <tr><td> 9 </td><td>red </td><td>赤 </td><td> </td><td style="background-image:url(../image/W_red.png);"> ?/td></tr>
229 * <tr><td> 10 </td><td>yellow </td><td>? </td><td> </td><td style="background-image:url(../image/W_yellow.png);"> ?/td></tr>
230 * <tr><td> 11 </td><td>navy </td><td>? </td><td> </td><td style="background-image:url(../image/W_navy.png);"> ?/td></tr>
231 * <tr><td> 12 </td><td>teal </td><td>青? </td><td> </td><td style="background-image:url(../image/W_teal.png);"> ?/td></tr>
232 * <tr><td> 13 </td><td>gray </td><td>灰 </td><td> </td><td style="background-image:url(../image/W_gray.png);"> ?/td></tr>
233 * <tr><td> 14 </td><td>indigo </td><td>? </td><td> </td><td style="background-image:url(../image/W_indigo.png);"> ?/td></tr>
234 * <tr><td> 15 </td><td>slategray </td><td>? </td><td> </td><td style="background-image:url(../image/W_slategray.png);"> ?/td></tr>
235 * <tr><td> 16 </td><td>chocorlate</td><td>チョコレー?/td><td> </td><td style="background-image:url(../image/W_chocorlate.png);"> ?/td></tr>
236 * <tr><td> 17 </td><td>darkgreen </td><td>深? </td><td> </td><td style="background-image:url(../image/W_darkgreen.png);"> ?/td></tr>
237 * <tr><td> 18 </td><td>violet </td><td>すみ?</td><td> </td><td style="background-image:url(../image/W_violet.png);"> ?/td></tr>
238 * <tr><td> 19 </td><td>darkslategray</td><td>深?</td><td> </td><td style="background-image:url(../image/W_darkslategray.png);"> ?/td></tr>
239 * <tr><td> 20 </td><td>lime </td><td>? </td><td> </td><td style="background-image:url(../image/W_lime.png);"> ?/td></tr>
240 * <tr><td> 21 </td><td>aqua </td><td>水色 </td><td> </td><td style="background-image:url(../image/W_aqua.png);"> ?/td></tr>
241 * <tr><td> 22 </td><td>maroon </td><td>ひわだ?</td><td> </td><td style="background-image:url(../image/W_maroon.png);"> ?/td></tr>
242 * <tr><td> 23 </td><td>olive </td><td>オリー?/td><td> </td><td style="background-image:url(../image/W_olive.png);"> ?/td></tr>
243 * <tr><td> 24 </td><td>silver </td><td>? </td><td> </td><td style="background-image:url(../image/W_silver.png);"> ?/td></tr>
244 * <tr><td> 25 </td><td>fuchsia </td><td>赤紫 </td><td> </td><td style="background-image:url(../image/W_fuchsia.png);"> ?/td></tr>
245 * <tr><td colspan="6"> </td></tr>
246 * <tr><td> BK </td><td>black2 </td><td>? </td><td> </td><td style="background-image:url(../image/W_black2.png);"> ?/td></tr>
247 * <tr><td> WT </td><td>white2 </td><td>白 </td><td> </td><td style="background-image:url(../image/W_white2.png);"> ?/td></tr>
248 * <tr><td> BL </td><td>blue2 </td><td>? </td><td> </td><td style="background-image:url(../image/W_blue2.png);"> ?/td></tr>
249 * <tr><td> RD </td><td>red2 </td><td>赤 </td><td> </td><td style="background-image:url(../image/W_red2.png);"> ?/td></tr>
250 * <tr><td> YL </td><td>yellow2 </td><td>? </td><td> </td><td style="background-image:url(../image/W_yellow2.png);"> ?/td></tr>
251 * </table>
252 *
253 * @param color グラフ要??位置??
254 */
255 public void setColor( final String color ) {
256 tag.add( "color",StringUtil.nval( getRequestParameter( color ),null ) );
257 }
258
259 /**
260 * 【TAG】グラフ要??色番号を設定します?
261 *
262 * @og.tag
263 * 色番号は、色コードを直接?する?ではなく?番号で?する?合に使用します?
264 * 棒グラフ要??ype="1"(横?,"6"(縦???色を設定します?
265 * "1??5 , BK,WT,BL,RD,YL" の色番号で?します?
266 * 色番号は、与えた数字を?色数で割り算した余を使用します?で??番の場合で?
267 * 繰返し使われます?特殊な色として、BK,WT,BL,RD,YLは、番号ではなく記号で?できます?
268 * 色コー?と 色番号が同時に?された場合?、色コー?が優先されます?
269 *
270 * @param clrNo グラフ要??描画開始位置
271 * @see #setColor( String )
272 */
273 public void setColorNo( final String clrNo ) {
274 tag.add( "colorNo",StringUtil.nval( getRequestParameter( clrNo ),null ) );
275 }
276
277 /**
278 * 【TAG】?イルスト?ンのアイコン画?URIより設?を設定します?
279 *
280 * @og.tag
281 * type="0:マイルスト?ン" の場合?表示するアイコンイメージの?を指定します?
282 * 例?../image/xxx.png"
283 *
284 * @param src マイルスト?ンのアイコン画?
285 */
286 public void setSrc( final String src ) {
287 tag.add( "src",StringUtil.nval( getRequestParameter( src ),null ) );
288 }
289
290 /**
291 * 【TAG】開始日(YYYYMMDD)、また?開始時?YYYYMMDDHH24MM)を設定します?
292 *
293 * @og.tag
294 * type="1:バ?" の場合?、バー表示の場合?書き始め?開始)を?します?
295 * こ?値は、バーでは、?含??になります?
296 * type="0:マイルスト?ン" の場合?、?イルストンを左端に表示します?
297 *
298 * @param start 開始日(YYYYMMDD)、また?開始時?YYYYMMDDHH24MM)
299 * @see #setType( String )
300 * @see #setEnd( String )
301 */
302 public void setStart( final String start ) {
303 tag.add( "start",StringUtil.nval( getRequestParameter( start ),null ) );
304 }
305
306 /**
307 * 【TAG】終?(YYYYMMDD)、また?終??YYYYMMDDHH24MM)を設定します?
308 *
309 * @og.tag
310 * type="1:バ?" の場合?、バー表示の場合?書き終わり(終?を?します?
311 * こ?値は、日付か時刻かで「含??/「含まな??が異なります?
312 * 日付?場合?、この値を?含??です?例えば?/12 を指定した?合?4/12は含みます?
313 * 時刻の場合?、?含まな??です?4/12 070000 を指定した?合?、午?時?含まな??で?
314 * ?時?9??9秒までのバ?が引かれます?
315 * type="0:マイルスト?ン" の場合?、?イルストンを右端に表示します?
316 *
317 * @param end 終?(YYYYMMDD)、また?終??YYYYMMDDHH24MM)
318 * @see #setType( String )
319 * @see #setStart( String )
320 */
321 public void setEnd( final String end ) {
322 tag.add( "end",StringUtil.nval( getRequestParameter( end ),null ) );
323 }
324
325 /**
326 * 【TAG】バー上に表示する?ストを?します?
327 *
328 * @og.tag
329 * バ?の上に、?などの?を重?て表示できます?
330 *
331 * @param text バ?上に表示する?ス?
332 */
333 public void setText( final String text ) {
334 tag.add( "text",StringUtil.nval( getRequestParameter( text ),null ) );
335 }
336
337 /**
338 * 【TAG】リンク作?時?値を設定します?
339 *
340 * @og.tag
341 * バ?の上??に対して、リンクを作?できます?
342 *
343 * @param href バ?上に表示する?ス?
344 * @see #setTarget( String )
345 */
346 public void setHref( final String href ) {
347 tag.add( "href",StringUtil.nval( getRequestParameter( href ),null ) );
348 }
349
350 /**
351 * 【TAG】リンク作?時?ターゲ?名を?します?
352 *
353 * @og.tag
354 * バ?の上??に対して、リンクを作?するとき?、ターゲ?名を?できます?
355 *
356 * @param target リンク作?時?ターゲ?
357 * @see #setHref( String )
358 */
359 public void setTarget( final String target ) {
360 tag.add( "target",StringUtil.nval( getRequestParameter( target ),null ) );
361 }
362
363 /**
364 * 【TAG】hrefで付加されるリンクの?にバ?本体を含めるかど?[true/false]を指定しま?初期値?false)?
365 *
366 * @og.tag
367 * true を指定すると、hrefで付加されるリンクの?にバ?本体を含めます?
368 *
369 * @param barLink リンクの?にバ?本体を含めるかど?[true/false]
370 * @see #setHref( String )
371 */
372 public void setBarLink( final String barLink ) {
373 tag.add( "barLink",StringUtil.nval( getRequestParameter( barLink ),null ) );
374 }
375
376 /**
377 * 【保留】ガント要??開始日に紐付く入力??します?
378 *
379 * @og.tag
380 * こ?入力?な?、ガント要??動かせません?
381 *
382 * @param startInput 開始日に紐付く入力?
383 * @see #setStart( String )
384 */
385 public void setStartInput( final String startInput ) {
386 tag.add( "startInput",StringUtil.nval( getRequestParameter( startInput ),null ) );
387 }
388
389 /**
390 * 【保留】ガント要??終?に紐付く入力??します?
391 *
392 * @og.tag
393 * こ?入力?な?、ガント要??動かせません?
394 *
395 * @param endInput 終?に紐付く入力?
396 * @see #setEnd( String )
397 */
398 public void setEndInput( final String endInput ) {
399 tag.add( "endInput",StringUtil.nval( getRequestParameter( endInput ),null ) );
400 }
401
402 /**
403 * 【TAG】行選択?チェ?ボックスを指定します?
404 *
405 * @og.tag
406 * 例えば、[ROW.ID] を指定する事で?択行を?する事ができます?
407 *
408 * @param chbox 行選択?チェ?ボックス
409 */
410 public void setChbox( final String chbox ) {
411 tag.add( "chbox",StringUtil.nval( getRequestParameter( chbox ),null ) );
412 }
413
414 /**
415 * 【TAG】積み上げガント?工数を指定します?
416 *
417 * @og.tag
418 * 積み上げガント?工数を指定します?
419 * 開始日、終?を利用して積上げ計算されます?
420 *
421 * @param cost 積み上げガント?工数
422 */
423 public void setCost( final String cost ) {
424 tag.add( "cost",StringUtil.nval( getRequestParameter( cost ),null ) );
425 }
426
427 /**
428 * 【TAG】積上げの?値?キャパシ??を?します?
429 *
430 * @og.tag
431 * ?値を?た?合?、?ーカーされます?
432 *
433 * @param capacity 積み上げガント?工数
434 */
435 public void setCapacity( final String capacity ) {
436 tag.add( "capacity",StringUtil.nval( getRequestParameter( capacity ),null ) );
437 }
438
439 /**
440 * タグの名称を?返します?
441 * 自??身のクラス名より?自動的に取り出せな?め?こ?メソ?をオーバ?ライドします?
442 *
443 * @return タグの名称
444 */
445 @Override
446 protected String getTagName() {
447 return "iGanttBar" ;
448 }
449
450 /**
451 * こ?オブジェクト???表現を返します?
452 * 基本???目?使用します?
453 *
454 * @return こ?クラスの??表現
455 */
456 @Override
457 public String toString() {
458 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
459 .println( "VERSION" ,VERSION )
460 .println( "tag" ,tag.makeTag() )
461 .println( "Other..." ,getAttributes().getAttribute() )
462 .fixForm().toString() ;
463 }
464 }