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]" text="[PN]" />
089 * <og:iGanttBar type="0" src="../image/dia_blue.gif" start="[DYORDER]" text="開? />
090 * <og:iGanttBar type="0" src="../image/dia_red.gif" end="[DYNOKI]" text="終? />
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]" text="[COSTCLM]"
138 * cost="[COSTCLM]" capacity="[CAPACITY]" />
139 * <og:iGanttBar type="0" src="../image/dia_blue.gif" start="[DYORDER]" text="開? />
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 }