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.fukurou.util.TagBuffer;
019import org.opengion.fukurou.util.ToString;                                              // 6.1.1.0 (2015/01/17)
020
021import static org.opengion.fukurou.util.StringUtil.nval ;               // 6.1.0.0 (2014/12/26)
022
023/**
024 * ガントチャートの繰り返しタグのフォーマットに使用します。
025 *
026 * iGanttBar タグは、TDタグの繰返し部に記述することで、個々のガントのタスクを作成します。
027 * これを使用する場合は、iGant タグを全体に一つ指定する必要があります。
028 *
029 * @og.formSample
030 * ●形式:<og:iGanttBar  ... />
031 * ●body:なし
032 * ●前提:headタグで、adjustEvent="Gantt" を指定してください。
033 *
034 * ●Tag定義:
035 *   <og:iGanttBar
036 *       type       ○ 【TAG】ガント要素のタイプ(0:マイルストーン 1:バー )(必須)
037 *       color         【TAG】バーの色(マイルストーンの場合は不要)
038 *       colorNo       【TAG】バーの色番号で指定します
039 *       src           【TAG】マイルストーンのアイコン画像(URIより設定)
040 *       start         【TAG】開始日(YYYYMMDD)、または開始時間(YYYYMMDDHH24MM)
041 *       end           【TAG】終了日(YYYYMMDD)、または終了時間(YYYYMMDDHH24MM)
042 *       text          【TAG】ガント要素の注釈メッセージ。
043 *       href          【TAG】入力した場合はガントにリンクを付加します。
044 *       target        【TAG】hrefを指定した場合に付加されるリンクのターゲット
045 *       barLink       【TAG】hrefで付加されるリンクの範囲にバー本体を含めるかどうか[true/false]を指定します(初期値:false)
046 *       startInput    【廃止】(startDateInputと同じ)ガント要素の開始日に紐付く入力欄(開始日または終了日に紐付く入力欄が設定しなければガント要素は動かせない)
047 *       endInput      【廃止】(endDateInputと同じ)ガント要素の終了日に紐付く入力欄(開始日または終了日に紐付く入力欄が設定しなければガント要素は動かせない)
048 *       chbox         【廃止】6.9.9.2 (2018/09/18) 行選択のチェックボックス 設定値:[ROW.ID]
049 *       startDateInput【TAG】6.9.9.0 (2018/08/20) 開始日付の入力欄のカラム名を指定します。
050 *       startTimeInput【TAG】6.9.9.0 (2018/08/20) 開始時刻の入力欄のカラム名を指定します。
051 *       endDateInput  【TAG】6.9.9.0 (2018/08/20) 終了日付の入力欄のカラム名を指定します。
052 *       endTimeInput  【TAG】6.9.9.0 (2018/08/20) 終了時刻の入力欄のカラム名を指定します。
053 *       moveStep      【TAG】6.9.9.2 (2018/09/18) ガントバーの移動歩幅単位(moveStep 1:日、2:時間、3:分)
054 *       fixed         【TAG】6.9.9.2 (2018/09/18) 固定2分割するカラムを指定します。
055 *       mStone        【TAG】6.9.9.2 (2018/09/18) マイルストーンカラムを指定します。
056 *       balloon       【TAG】6.9.9.2 (2018/09/18) バルーンとして表示するカラムを指定します。
057 *       keyInfo       【TAG】6.9.9.2 (2018/09/18) キー情報のカラムを、指定します。
058 *       writable      【TAG】6.9.9.2 (2018/09/18) writable属性のカラムを指定します。
059 *       report        【TAG】6.9.9.2 (2018/09/18) レポートカラムを指定します。
060 *       zindex        【TAG】6.9.9.2 (2018/09/18) 表示の重なり順のカラムを指定します。
061 *       id            【TAG】要素を一意に指定する値を指定します。(ガント要素を動かす際に指定)
062 *       cost          【TAG】開始日、終了日を利用して積上げられる工数を指定します。
063 *       capacity      【TAG】積上げの最大値(キャパシティ)を指定します。
064 *       debug         【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
065 *   />
066 *
067 * ●使用例
068 *   (通常ガント)
069 *  <og:view
070 *      viewFormType = "HTMLCustomTable"
071 *      command      = "{@command}"
072 *      writable     = "false"
073 *      useScrollBar = "false"
074 *  >
075 *    <og:thead rowspan="2">
076 *      <tr>
077 *          <td>[NOORDER]</td>
078 *          <td rowspan="2" class="gantt zoom{@VZOOM}" style="line-height:normal;text-align:left;background-image: url('../image/ganttBG{@VZOOM}.gif');" >
079 *              <div style="position:relative;left:0px;z-index:101; " height="100%" width="100%" >
080 *                  <og:ganttHeader
081 *                      startDate       = "{@startDate}"
082 *                      endDate         = "{@endDate}"
083 *                      zoom            = "{@VZOOM}"
084 *                      daySpan         = "{@daySpan}"
085 *                  />
086 *              </div>
087 *          </td>
088 *      </tr>
089 *    </og:thead>
090 *    <og:tbody rowspan="2">
091 *      <tr>
092 *          <td>[NOORDER]</td>
093 *          <td rowspan="2" class="gantt zoom{@VZOOM}" style="text-align:left;background-image: url('../image/ganttBG{@VZOOM}.gif');" >
094 *              <og:iGanttBar type="1" colorNo="[COLOR]" start="[DYORDER]" end="[DYNOKI]" text="[PN]" />
095 *              <og:iGanttBar type="0" src="../image/dia_blue.gif" start="[DYORDER]"      text="開始" />
096 *              <og:iGanttBar type="0" src="../image/dia_red.gif"  end="[DYNOKI]"         text="終了" />
097 *          </td>
098 *      </tr>
099 *    </og:tbody>
100 *  </og:view>
101 *    
102 *   <og:iGantt
103 *       margeRows      = "true"
104 *       fixedCols      = "1"
105 *   />
106 *
107 *   (積み上げガント)
108 *  <og:view
109 *      viewFormType = "HTMLStackedGanttTable"
110 *      command      = "{@command}"
111 *      writable     = "false"
112 *      useScrollBar = "false"
113 *      useParam     = "true"
114 *      numberType   = "none"
115 *  >
116 *  <og:stackParam
117 *      stackColumns = "NOORDER"
118 *  />
119 * 
120 *    <og:thead rowspan="2">
121 *      <tr>
122 *          <td>[NOORDER]</td>
123 *          <td>[PN]</td>
124 *          <td rowspan="2" class="gantt zoom{@SZOOM}" style="text-align:left;background-image: url('../image/ganttBG{@SZOOM}.gif');" >
125 *              <div style="position:relative;left:0px;z-index:101; " height="100%" width="100%" >
126 *                  <og:ganttHeader
127 *                      startDate   = "{@startDate}"
128 *                      endDate     = "{@endDate}"
129 *                      zoom        = "{@SZOOM}"
130 *                      calDB       = "GE13"
131 *                      arg1        = "A"
132 *                  />
133 *              </div>
134 *          </td>
135 *      </tr>
136 *    </og:thead>
137 *    <og:tbody rowspan="2">
138 *      <tr>
139 *          <td>[NOORDER]</td>
140 *          <td>[PN]</td>
141 *          <td rowspan="2" class="gantt zoom{@VZOOM}" style="text-align:left;background-image: url('../image/ganttBG{@VZOOM}.gif');" >
142 *              <iGanttBar type="1" colorNo="[COLOR]" start="[DYORDER]" end="[DYNOKI]"  text="[COSTCLM]"
143 *                    cost="[COSTCLM]" capacity="[CAPACITY]" />
144 *              <og:iGanttBar type="0" src="../image/dia_blue.gif" start="[DYORDER]"      text="開始" />
145 *          </td>
146 *      </tr>
147 *    </og:tbody>
148 *  </og:view>
149 *    
150 *   <og:iGantt
151 *       margeRows      = "true"
152 *       fixedCols      = "1"
153 *       verticalShift  = "false"
154 *       viewGantt      = "{@viewGantt}"
155 *       stackHoliday   = "{@stackHoliday}"
156 *       useBgColor     = "true"
157 *       viewMode       = "2"
158 *   />
159 *
160 * @og.rev 5.6.3.2 (2013/04/12) 新規作成
161 * @og.group 画面部品
162 *
163 * @version  5.0
164 * @author       Kazuhiko Hasegawa
165 * @since    JDK6.0,
166 */
167public class ViewIGanttBarTag extends CommonTagSupport {
168        /** このプログラムのVERSION文字列を設定します。   {@value} */
169        private static final String VERSION = "6.9.9.2 (2018/09/18)" ;
170        private static final long serialVersionUID = 699220180918L ;
171
172        private transient TagBuffer tag = new TagBuffer( "iGanttBar" ).addBody( "<!-- -->" );           // 6.1.1.0 (2015/01/17) TagBufferの連結記述
173
174        /**
175         * デフォルトコンストラクター
176         *
177         * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
178         */
179        public ViewIGanttBarTag() { super(); }          // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。
180
181        /**
182         * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
183         *
184         * @og.rev 6.0.2.5 (2014/10/31) HTML5対応。javaScriptで、BODYがないと入れ子になってしまう。
185         *
186         * @return      後続処理の指示
187         */
188        @Override
189        public int doEndTag() {
190                debugPrint();           // 4.0.0 (2005/02/28)
191
192                // 6.1.1.0 (2015/01/17) TagBufferの連結記述
193                jspPrint( tag.makeTag() );
194
195                return EVAL_PAGE ;              // ページの残りを評価する。
196        }
197
198        /**
199         * タグリブオブジェクトをリリースします。
200         * キャッシュされて再利用されるので、フィールドの初期設定を行います。
201         *
202         */
203        @Override
204        protected void release2() {
205                super.release2();
206                tag = new TagBuffer( "iGanttBar" ).addBody( "<!-- -->" );               // 6.1.1.0 (2015/01/17) TagBufferの連結記述
207        }
208
209        /**
210         * 【TAG】ガント要素のタイプ[0:マイルストーン/1:バー]を指定します。
211         *
212         * @og.tag
213         * 0:マイルストーン を指定すると、その日(時間)に、マーカーがされます。
214         * ガントのような期間ではなく、そのポイントを表すのに使用します。
215         * 例えば、受注日、納期 などの設定値です。
216         * start か end どちらかの指定で構いません。
217         * start を使用した場合は、指定日(時間)の前方に、endを使用した場合は、
218         * 指定日(時間)の後方にマーカーが置かれます。
219         *
220         * @param   type ガント要素のタイプ [0:マイルストーン/1:バー]
221         */
222        public void setType( final String type ) {
223                tag.add( "type",nval( getRequestParameter( type ),null ) );
224        }
225
226        /**
227         * 【TAG】ガント要素(バー)の色コードを設定します。
228         *
229         * @og.tag
230         * color は、ガント要素の色コードを設定します。
231         * type="0:マイルストーン" の場合は不要です。
232         * このコードは、予め決められた色画像を呼び出しますので、任意の色が使えるという事ではありません。
233         * 色指定は、横棒の場合は、image/W_色コード.png の画像を使います。
234         * 色コード と 色番号が同時に指定された場合は、色コード が優先されます。
235         *
236         * type=2:差分枠 は、value > baseVal の場合は、超過を、value < baseValの場合は、不足を表します。
237         * <table border="1" frame="box" rules="all">
238         *   <caption>色番号 対応表</caption>
239     *   <tr><th>色番号</th><th>設定値    </th><th>棒色   </th><th> </th><th>横棒サンプル</th></tr>
240     *   <tr><td> 0    </td><td>blue      </td><td>青     </td><td> </td><td style="background-image:url(../image/W_blue.png);">    </td></tr>
241     *   <tr><td> 1    </td><td>black     </td><td>黒     </td><td> </td><td style="background-image:url(../image/W_black.png);">   </td></tr>
242     *   <tr><td> 2    </td><td>brown     </td><td>茶     </td><td> </td><td style="background-image:url(../image/W_brown.png);">   </td></tr>
243     *   <tr><td> 3    </td><td>green     </td><td>緑     </td><td> </td><td style="background-image:url(../image/W_green.png);">   </td></tr>
244     *   <tr><td> 4    </td><td>lightblue </td><td>薄青   </td><td> </td><td style="background-image:url(../image/W_lightblue.png);">  </td></tr>
245     *   <tr><td> 5    </td><td>lightgreen</td><td>薄緑   </td><td> </td><td style="background-image:url(../image/W_lightgreen.png);">  </td></tr>
246     *   <tr><td> 6    </td><td>orange    </td><td>オレンジ</td><td> </td><td style="background-image:url(../image/W_orange.png);">  </td></tr>
247     *   <tr><td> 7    </td><td>pink      </td><td>ピンク </td><td> </td><td style="background-image:url(../image/W_pink.png);">   </td></tr>
248     *   <tr><td> 8    </td><td>purple    </td><td>紫     </td><td> </td><td style="background-image:url(../image/W_purple.png);">   </td></tr>
249     *   <tr><td> 9    </td><td>red       </td><td>赤     </td><td> </td><td style="background-image:url(../image/W_red.png);">        </td></tr>
250     *   <tr><td> 10   </td><td>yellow    </td><td>黄     </td><td> </td><td style="background-image:url(../image/W_yellow.png);">  </td></tr>
251     *   <tr><td> 11   </td><td>navy      </td><td>濃紺   </td><td> </td><td style="background-image:url(../image/W_navy.png);">   </td></tr>
252     *   <tr><td> 12   </td><td>teal      </td><td>青緑   </td><td> </td><td style="background-image:url(../image/W_teal.png);">   </td></tr>
253     *   <tr><td> 13   </td><td>gray      </td><td>灰     </td><td> </td><td style="background-image:url(../image/W_gray.png);">     </td></tr>
254     *   <tr><td> 14   </td><td>indigo    </td><td>藍     </td><td> </td><td style="background-image:url(../image/W_indigo.png);">  </td></tr>
255     *   <tr><td> 15   </td><td>slategray </td><td>鉄色   </td><td> </td><td style="background-image:url(../image/W_slategray.png);">  </td></tr>
256     *   <tr><td> 16   </td><td>chocorlate</td><td>チョコレート</td><td> </td><td style="background-image:url(../image/W_chocorlate.png);">  </td></tr>
257     *   <tr><td> 17   </td><td>darkgreen </td><td>深緑   </td><td> </td><td style="background-image:url(../image/W_darkgreen.png);">  </td></tr>
258     *   <tr><td> 18   </td><td>violet    </td><td>すみれ </td><td> </td><td style="background-image:url(../image/W_violet.png);">  </td></tr>
259     *   <tr><td> 19   </td><td>darkslategray</td><td>深鉄色</td><td> </td><td style="background-image:url(../image/W_darkslategray.png);">  </td></tr>
260     *   <tr><td> 20   </td><td>lime      </td><td>緑     </td><td> </td><td style="background-image:url(../image/W_lime.png);">     </td></tr>
261     *   <tr><td> 21   </td><td>aqua      </td><td>水色   </td><td> </td><td style="background-image:url(../image/W_aqua.png);">   </td></tr>
262     *   <tr><td> 22   </td><td>maroon    </td><td>ひわだいろ</td><td> </td><td style="background-image:url(../image/W_maroon.png);">  </td></tr>
263     *   <tr><td> 23   </td><td>olive     </td><td>オリーブ</td><td> </td><td style="background-image:url(../image/W_olive.png);">   </td></tr>
264     *   <tr><td> 24   </td><td>silver    </td><td>銀     </td><td> </td><td style="background-image:url(../image/W_silver.png);">  </td></tr>
265     *   <tr><td> 25   </td><td>fuchsia   </td><td>赤紫   </td><td> </td><td style="background-image:url(../image/W_fuchsia.png);">  </td></tr>
266     *   <tr><td colspan="6"> </td></tr>
267     *   <tr><td> BK   </td><td>black2    </td><td>黒     </td><td> </td><td style="background-image:url(../image/W_black2.png);">  </td></tr>
268     *   <tr><td> WT   </td><td>white2    </td><td>白     </td><td> </td><td style="background-image:url(../image/W_white2.png);">  </td></tr>
269     *   <tr><td> BL   </td><td>blue2     </td><td>青     </td><td> </td><td style="background-image:url(../image/W_blue2.png);">    </td></tr>
270     *   <tr><td> RD   </td><td>red2      </td><td>赤     </td><td> </td><td style="background-image:url(../image/W_red2.png);">    </td></tr>
271     *   <tr><td> YL   </td><td>yellow2   </td><td>黄     </td><td> </td><td style="background-image:url(../image/W_yellow2.png);">  </td></tr>
272         * </table>
273         *
274         * @param   color バー色
275         */
276        public void setColor( final String color ) {
277                tag.add( "color",nval( getRequestParameter( color ),null ) );
278        }
279
280        /**
281         * 【TAG】グラフ要素の色番号を設定します。
282         *
283         * @og.tag
284         * 色番号は、色コードを直接指定するのではなく、番号で指定する場合に使用します。
285         * 棒グラフ要素(type="1"(横棒),"6"(縦棒))の色を設定します。
286         * "1~25 , BK,WT,BL,RD,YL" の色番号で指定します。
287         * 色番号は、与えた数字を内部色数で割り算した余を使用しますので、連番の場合でも
288         * 繰返し使われます。特殊な色として、BK,WT,BL,RD,YLは、番号ではなく記号で指定できます。
289         * 色コード と 色番号が同時に指定された場合は、色コード が優先されます。
290         *
291         * @param   clrNo 色番号 [1~25/BK/WT/BL/RD/YL]
292         * @see         #setColor( String )
293         */
294        public void setColorNo( final String clrNo ) {
295                tag.add( "colorNo",nval( getRequestParameter( clrNo ),null ) );
296        }
297
298        /**
299         * 【TAG】マイルストーンのアイコン画像(URIより設定)を設定します。
300         *
301         * @og.tag
302         * type="0:マイルストーン" の場合、表示するアイコンイメージの所在を指定します。
303         * 例:"../image/xxx.png" 
304         *
305         * @param   src アイコン画像
306         */
307        public void setSrc( final String src ) {
308                tag.add( "src",nval( getRequestParameter( src ),null ) );
309        }
310
311        /**
312         * 【TAG】開始日(YYYYMMDD)、または開始時間(YYYYMMDDHH24MM)を設定します。
313         *
314         * @og.tag
315         * type="1:バー" の場合は、バー表示の場合の書き始め(開始)を指定します。
316         * この値は、バーでは、「含む」になります。
317         * type="0:マイルストーン" の場合は、マイルストンを左端に表示します。
318         *
319         * @param   start 開始日or開始時間 (YYYYMMDD or YYYYMMDDHH24MM)
320         * @see         #setType( String )
321         * @see         #setEnd( String )
322         */
323        public void setStart( final String start ) {
324                tag.add( "start",nval( getRequestParameter( start ),null ) );
325        }
326
327        /**
328         * 【TAG】終了日(YYYYMMDD)、または終了時間(YYYYMMDDHH24MM)を設定します。
329         *
330         * @og.tag
331         * type="1:バー" の場合は、バー表示の場合の書き終わり(終了)を指定します。
332         * この値は、日付か時刻かで「含む」/「含まない」が異なります。
333         * 日付の場合は、この値を「含む」です。例えば、4/12 を指定した場合、4/12は含みます。
334         * 時刻の場合は、「含まない」です。4/12 070000 を指定した場合は、午前7時は含まないので、
335         * 6時59分59秒までのバーが引かれます。
336         * type="0:マイルストーン" の場合は、マイルストンを右端に表示します。
337         *
338         * @param   end 終了日or終了時間 (YYYYMMDD or YYYYMMDDHH24MM)
339         * @see         #setType( String )
340         * @see         #setStart( String )
341         */
342        public void setEnd( final String end ) {
343                tag.add( "end",nval( getRequestParameter( end ),null ) );
344        }
345
346        /**
347         * 【TAG】バー上に表示するテキストを指定します。
348         *
349         * @og.tag
350         * バーの上に、値などの文字を重ねて表示できます。
351         *
352         * @param   text 表示テキスト
353         */
354        public void setText( final String text ) {
355                tag.add( "text",nval( getRequestParameter( text ),null ) );
356        }
357
358        /**
359         * 【TAG】リンク作成時の値を設定します。
360         *
361         * @og.tag
362         * バーの上の文字に対して、リンクを作成できます。
363         *
364         * @param   href リンク
365         * @see         #setTarget( String )
366         */
367        public void setHref( final String href ) {
368                tag.add( "href",nval( getRequestParameter( href ),null ) );
369        }
370
371        /**
372         * 【TAG】リンク作成時のターゲット名を指定します。
373         *
374         * @og.tag
375         * バーの上の文字に対して、リンクを作成するときの、ターゲット名を指定できます。
376         *
377         * @param   target ターゲット
378         * @see         #setHref( String )
379         */
380        public void setTarget( final String target ) {
381                tag.add( "target",nval( getRequestParameter( target ),null ) );
382        }
383
384        /**
385         * 【TAG】hrefで付加されるリンクの範囲にバー本体を含めるかどうか[true/false]を指定します(初期値:false)。
386         *
387         * @og.tag
388         * true を指定すると、hrefで付加されるリンクの範囲にバー本体を含めます。
389         *
390         * @param   barLink バー可否 [true:する/false:しない]
391         * @see         #setHref( String )
392         */
393        public void setBarLink( final String barLink ) {
394                tag.add( "barLink",nval( getRequestParameter( barLink ),null ) );
395        }
396
397//      /**
398//       * 【廃止】(startDateInputと同じ)ガント要素の開始日に紐付く入力欄を指定します。
399//       *
400//       * @og.tag
401//       * この入力欄がないと、ガント要素は動かせません。
402//       * 
403//       * @og.rev 5.9.14.1 (2016/11/11) startInputではなくstartDateInut
404//       * @og.rev 6.9.9.0 (2018/08/20) startDateInput として、用意します。
405//       *
406//       * @param   startInput 開始日入力欄
407//       * @see         #setStart( String )
408//       */
409//      public void setStartInput( final String startInput ) {
410//              tag.add( "startDateInput",nval( getRequestParameter( startInput ),null ) );
411//      }
412
413        /**
414         * 【TAG】ガント要素の開始日に紐付く入力欄を指定します。
415         *
416         * @og.tag
417         * この入力欄がないと、ガント要素は動かせません。
418         * 
419         * @og.rev 5.9.14.1 (2016/11/11) startInputではなくstartDateInut
420         * @og.rev 6.9.9.0 (2018/08/20) startDateInput として、用意します。
421         *
422         * @param   startDateInput 開始日入力欄
423         * @see         #setStart( String )
424         */
425        public void setStartDateInput( final String startDateInput ) {
426                tag.add( "startDateInput",nval( getRequestParameter( startDateInput ),null ) );
427        }
428
429        /**
430         * 【TAG】ガント要素の開始時刻に紐付く入力欄を指定します。
431         *
432         * @og.tag
433         * ガント要素の開始時刻に紐付く入力欄を指定します。
434         * 
435         * @og.rev 6.9.9.0 (2018/08/20) startTimeInput として、用意します。
436         *
437         * @param   startTimeInput 開始日入力欄
438         * @see         #setStart( String )
439         */
440        public void setStartTimeInput( final String startTimeInput ) {
441                tag.add( "startTimeInput",nval( getRequestParameter( startTimeInput ),null ) );
442        }
443
444//      /**
445//       * 【廃止】(endDateInputと同じ)ガント要素の終了日に紐付く入力欄を指定します。
446//       *
447//       * @og.tag
448//       * この入力欄がないと、ガント要素は動かせません。
449//       * 
450//       * @og.rev 5.9.14.1 (2016/11/11) endInputではなくendDateInut
451//       * @og.rev 6.9.9.0 (2018/08/20) endDateInput として、用意します。
452//       *
453//       * @param   endInput 終了日入力欄
454//       * @see         #setEnd( String )
455//       */
456//      public void setEndInput( final String endInput ) {
457//              tag.add( "endDateInput",nval( getRequestParameter( endInput ),null ) );
458//      }
459
460        /**
461         * 【TAG】ガント要素の終了日に紐付く入力欄を指定します。
462         *
463         * @og.tag
464         * この入力欄がないと、ガント要素は動かせません。
465         * 
466         * @og.rev 5.9.14.1 (2016/11/11) endInputではなくendDateInut
467         * @og.rev 6.9.9.0 (2018/08/20) endDateInput として、用意します。
468         *
469         * @param   endDateInput 終了日入力欄
470         * @see         #setEnd( String )
471         */
472        public void setEndDateInput( final String endDateInput ) {
473                tag.add( "endDateInput",nval( getRequestParameter( endDateInput ),null ) );
474        }
475
476        /**
477         * 【TAG】ガント要素の終了時刻に紐付く入力欄を指定します。
478         *
479         * @og.tag
480         * ガント要素の終了時刻に紐付く入力欄を指定します。
481         * 
482         * @og.rev 6.9.9.0 (2018/08/20) endTimeInput として、用意します。
483         *
484         * @param   endTimeInput 終了日入力欄
485         * @see         #setEnd( String )
486         */
487        public void setEndTimeInput( final String endTimeInput ) {
488                tag.add( "endTimeInput",nval( getRequestParameter( endTimeInput ),null ) );
489        }
490
491        /**
492         * 【TAG】ガントバーの移動歩幅単位(1:日、2:時間、3:分)を指定します。
493         *
494         * @og.tag
495         * ガントバーの移動歩幅単位(1:日、2:時間、3:分)を指定します。
496         * 
497         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
498         *
499         * @param   moveStep ガントバーの移動歩幅単位(moveStep 1:日、2:時間、3:分)
500         */
501        public void setMoveStep( final String moveStep ) {
502                tag.add( "moveStep",nval( getRequestParameter( moveStep ),null ) );
503        }
504
505        /**
506         * 【TAG】固定2分割するカラムを指定します。
507         *
508         * @og.tag
509         * 固定2分割するカラムを指定します。
510         * 
511         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
512         *
513         * @param   fixed 固定2分割するカラム
514         */
515        public void setFixed( final String fixed ) {
516                tag.add( "fixed",nval( getRequestParameter( fixed ),null ) );
517        }
518
519        /**
520         * 【TAG】マイルストーンカラムを指定します。
521         *
522         * @og.tag
523         * マイルストーンカラムを指定します。
524         * 
525         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
526         *
527         * @param   mStone 固定2分割するカラム
528         */
529        public void setMStone( final String mStone ) {
530                tag.add( "mStone",nval( getRequestParameter( mStone ),null ) );
531        }
532
533        /**
534         * 【TAG】バルーンとして表示するカラムを指定します。
535         *
536         * @og.tag
537         * バルーンとして表示するカラムを指定します。
538         * 
539         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
540         *
541         * @param   balloon バルーンとして表示するカラム
542         */
543        public void setBalloon( final String balloon ) {
544                tag.add( "balloon",nval( getRequestParameter( balloon ),null ) );
545        }
546
547        /**
548         * 【TAG】キー情報のカラムを、指定します。
549         *
550         * @og.tag
551         * キー情報のカラムを、指定します。
552         * 
553         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
554         *
555         * @param   keyInfo キー情報のカラム
556         */
557        public void setKeyInfo( final String keyInfo ) {
558                tag.add( "keyInfo",nval( getRequestParameter( keyInfo ),null ) );
559        }
560
561        /**
562         * 【TAG】writable属性のカラムを指定します。
563         *
564         * @og.tag
565         * writable属性のカラムを指定します。
566         * 
567         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
568         *
569         * @param   writable writable属性のカラム
570         */
571        public void setWritable( final String writable ) {
572                tag.add( "writable",nval( getRequestParameter( writable ),null ) );
573        }
574
575        /**
576         * 【TAG】レポートカラムを指定します。
577         *
578         * @og.tag
579         * レポートカラムを指定します。
580         * 
581         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
582         *
583         * @param   report レポートカラム
584         */
585        public void setReport( final String report ) {
586                tag.add( "report",nval( getRequestParameter( report ),null ) );
587        }
588
589        /**
590         * 【TAG】表示の重なり順のカラムを指定します。
591         *
592         * @og.tag
593         * 表示の重なり順のカラムを指定します。
594         * 
595         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
596         *
597         * @param   zindex 表示の重なり順のカラム
598         */
599        public void setZindex( final String zindex ) {
600                tag.add( "zindex",nval( getRequestParameter( zindex ),null ) );
601        }
602
603//      /**
604//       * 【TAG】行選択のチェックボックスを指定します。
605//       *
606//       * @og.tag
607//       * 例えば、[ROW.ID] を指定する事で、選択行を指定する事ができます。
608//       *
609//       * @og.rev 6.9.9.2 (2018/09/18) 廃止
610//       *
611//       * @param   chboxid チェックボックス指定
612//       */
613//      public void setChbox( final String chbox ) {
614//              tag.add( "chbox",nval( getRequestParameter( chbox ),null ) );
615//      }
616
617        /**
618         * 【TAG】積み上げガントの工数を指定します。
619         *
620         * @og.tag
621         * 積み上げガントの工数を指定します。
622         * 開始日、終了日を利用して積上げ計算されます。
623         *
624         * @param   cost 積み上げガントの工数
625         */
626        public void setCost( final String cost ) {
627                tag.add( "cost",nval( getRequestParameter( cost ),null ) );
628        }
629
630        /**
631         * 【TAG】積上げの最大値(キャパシティ)を指定します。
632         *
633         * @og.tag
634         * 最大値を超えた場合は、マーカーされます。
635         *
636         * @param   capacity 積み上げガントの工数
637         */
638        public void setCapacity( final String capacity ) {
639                tag.add( "capacity",nval( getRequestParameter( capacity ),null ) );
640        }
641
642        /**
643         * 【TAG】要素を一意に指定するためのidを指定します。
644         *
645         * @og.tag
646         * 要素を一意に指定するためのID体系を指定します。
647         * 例えばA__[I]のように設定します。
648         * ガント要素は動かす際には必要です。
649         * 
650         * @og.rev 5.9.14.1 (2016/11/11)
651         *
652         * @param   id 一意になる文字列
653         */
654        @Override
655        public void setId( final String id ) {
656                tag.add( "id",nval( getRequestParameter( id ),null ) );
657        }
658
659        /**
660         * タグの名称を、返します。
661         * 自分自身のクラス名より、自動的に取り出せないため、このメソッドをオーバーライドします。
662         *
663         * @return  タグの名称
664         * @og.rtnNotNull
665         */
666        @Override
667        protected String getTagName() {
668                return "iGanttBar" ;
669        }
670
671        /**
672         * このオブジェクトの文字列表現を返します。
673         * 基本的にデバッグ目的に使用します。
674         *
675         * @return このクラスの文字列表現
676         * @og.rtnNotNull
677         */
678        @Override
679        public String toString() {
680                return ToString.title( this.getClass().getName() )
681                                .println( "VERSION"             ,VERSION        )
682                                .println( "tag"                 ,tag.makeTag()  )
683                                .println( "Other..."    ,getAttributes().getAttribute() )
684                                .fixForm().toString() ;
685        }
686}