2010年8月25日水曜日

ExtJS-97 ヘッダを拡張したらスクローラがでなくなった

気がつくと5日から更新してない。
JSは触ってたけどExtJSは触ってなかった。
GoogleMapAPIを触ってみたみたくてそっちで遊んでました。
あとはTwitterAPIで遊んでみたく。
それで慣れたらyouRoomAPIとか。youRoom、メンバーの食いつきはうまいこといったんだけど
その後、うまく展開できなかったから次の策を考えなければ。
あとは。Hyper Estraierってのを@Mt_blue81さんに聞いたのでそちらも。
やりたいことだらけですね。本当に。仕事じゃないから楽しいのかな?仕事でも楽しいんだろうな。

今年も残りわずかなので資格も取らなきゃいけなそう。
ExtJsとも疎遠になってしまうのかな。。
明日は勉強会。
================
さて、ExtJs-56 階層構造のつぶしこみ5ガントチャートのラインとカンレダへっだでやってたことをほじくりかえしたら
スクローラが消えてでないことがわかった。
もう一年前のことをもう一度掘り起こして実装の続きをするってわりときびしいw


このヘッダはロード後のコールバック内で動的にヘッダセル内に構築してて
その際に三行分に拡張するものだからスクローラがそのまま下に下がって
Gridの枠外にでてしまっていた。
仕方ないのでGridViewのコードを引用してヘッダをレンダリングするときに
スクローラを無理やり取得してヘッダ拡張分を引いてやることにした。
もうマジックナンバー埋めちゃってるけどw。

    
//ヘッダの描画
me.hedderRender = function() {
    var me = this,
    Element = Ext.Element,
    grid = me.getView().grid;
    el = Ext.get(grid.getGridEl().dom.firstChild),
    mainWrap = new Element(el.child('div.x-grid3-viewport')),
    mainHd = new Element(mainWrap.child('div.x-grid3-header')),
    scroller = new Element(mainWrap.child('div.x-grid3-scroller'));

    //YMD用カラムへYMDのテーブル構成をAppend
    var headercellElement = me.getView().getHeaderCell((me.config.model.configGenerator.columnModelConfig.length - 1));
   headercellElement.innerHTML = me.ganttManager.generateGanttHeader();

    //水平スクローラが押し出されてしまうのでヘッダ、スクローラともに明示的に再計算する
    headerHeight = mainHd.getHeight();
    scrollHeight = grid.getSize(true).height - ((headerHeight*2)-4);
    scroller.setHeight(scrollHeight);
}

まぁ、でるようになったっていうことで。









ねよ。

2010年8月5日木曜日

sql久しぶりすぎて四苦八苦

もともとSQLではじょいんしてしゅとくしてとか
うにおんしてとか基本的なところをやった程度だった。
で、以前いろいろ調べて参考にさせてもらって作ったものはSSDの事故により紛失。

先日から作り直すことになった。
ほしい情報は
ID、ネストレベル、パス。
なんかうまくかけないし、三つに分かれちゃったけど、
親ID、IDな階層構造を持つテーブルから取得するストアドができたかな。

疲れているときのビールでふらふらしながらコードを書くのは面白い。

元はこちら。

--情報取得

CREATE PROC [dbo].[S_showHierarchy]
(
 @tableName nvarchar(256),
 @parentFieldName nvarchar(256),
 @childFieldName nvarchar(256),
 @rootId int,
 @idpath nvarchar(256) OUTPUT
)
AS
BEGIN
 SET NOCOUNT ON
 --テンポラリテーブル作成
 CREATE TABLE #hierarchy(id int NOT NULL,level int NOT NULL,idpath nvarchar(256))
 
 --呼び出し
 EXEC [dbo].[S_createHierarchyTable]
  @tableName = @tableName,
  @parentFieldName = @parentFieldName,
  @childFieldName = @childFieldName,
  @rootId = @rootId,
  @idpath = @idpath OUTPUT
 
 --最後に返却用にSELECTを実施
 SELECT * FROM #hierarchy
END


--テーブル作成

CREATE PROC [dbo].[S_createHierarchyTable]
(
 @tableName nvarchar(256),
 @parentFieldName nvarchar(256),
 @childFieldName nvarchar(256),
 @rootId int,
 @idpath nvarchar(256) OUTPUT
)
AS
BEGIN
 SET NOCOUNT ON
 DECLARE @minID int, @whereToken nvarchar(1024)

 --指定親ID取得
 SET @whereToken = @childFieldName+' = '+STR(@rootId)
 EXEC dbo.S_getHierarchyMinID @tableName,@childFieldName,@whereToken,@minID OUTPUT
 --ネストパスの生成
 SET @idpath = @idpath + '-' + CONVERT(nvarchar,@minID)
 --PRINT REPLICATE('-', @@NESTLEVEL * 1) + STR(@minID) + STR(@@NESTLEVEL) + @idpath
 PRINT CONVERT(nvarchar,@minID) + '|' + CONVERT(nvarchar,@@NESTLEVEL) + '|' + @idpath
 
 --テンポラリテーブルに挿入
 INSERT INTO #hierarchy VALUES(@minID,@@NESTLEVEL,@idpath)
  
 --■次の階層の準備処理 --
 --指定親ID配下の最小値取得
 SET @whereToken = @parentFieldName+' = '+CONVERT(nvarchar,@rootId)
 EXEC dbo.S_getHierarchyMinID @tableName,@childFieldName,@whereToken,@minID OUTPUT
 --SET @EmpID = (SELECT MIN(EmpID) FROM dbo.Emp WHERE MgrID = @Root)
 
 WHILE @minID IS NOT NULL
 BEGIN
  --再帰
  EXEC dbo.S_createHierarchyTable @tableName,@parentFieldName,@childFieldName,@minID, @idpath
  SET @whereToken = @parentFieldName+' = '+CONVERT(nvarchar,@rootId)+' AND '+@childFieldName+' > '+CONVERT(nvarchar,@minID)
  EXEC dbo.S_getHierarchyMinID @tableName,@childFieldName,@whereToken,@minID OUTPUT
 END
 
END


--最小ID取得

CREATE PROC [dbo].[S_getHierarchyMinID]
(
 @tableName nvarchar(256),
 @childFieldName nvarchar(256),
 @whereToken nvarchar(256),
 @minID int OUTPUT
)
AS
DECLARE @SqlQuery nvarchar(1024)
SET @SqlQuery = '' + 
 'SELECT @minID = MIN('+@childFieldName+')' +
 ' FROM '+@tableName+
 ' WHERE '+@whereToken + ''
--PRINT @SqlQuery
EXECUTE SP_EXECUTESQL @SqlQuery,N'@minID int OUTPUT', @minID OUTPUT

2010年8月3日火曜日

気分だけMac














気分だけMacにしてみた。

キーボードはさっくりと スタート→デバイスとプリンタ→デバイスの追加
でキーボードの電源いればOK。

トラックパッドはこちらのサイトにお世話になりました。
私の場合、64bit版でしたが、とっても丁寧にかかれていたので迷わずできました。

感謝です。

こちらもドライバ入れた後、スタート→デバイスとプリンタ→デバイスの追加から・・・
トラックパッドの電源入れてOKです。

お金、なくなりましたとさ。

2010年8月2日月曜日

気合いが入る


今週は一人暮らし。コード組むぞと気合いいれる。みんな実家だし、環境出しっぱなしでもオーケー。だからキーボードをデスクトップから引っこ抜いてきた。がんばるぞ。