m2

Hudson 1.357 で Static Analysis Collector Plug-in の統計が見えなくなってる件

いつからか HudsonAnalysis Collector Plug-in による統計のタブの中身が見えなくなってて Opera Dragonfly で見てみたら

<div class="yui-content" style="display:none">

とかなってました。そりゃ見えないわ。(YUITabView が使ってあります。)

最初はプラグイン側の問題かと思ったんだけど、デバッガで追ってみたら hudson-behavior.js の中で

var hudsonRules = {
    ...
    "DIV.loading" : function(e) { e.style.display = 'none' }
};
...
Behaviour.register(hudsonRules);

なんてのが。
TabView が表示内容をロードする際に

<div id="statistics" class="yui-navset yui-navset-top">
<ul class="yui-nav"> ...
<div class="yui-content loading">

という状態に一度なるようで、これが原因だったようです。プラグイン側は何も悪くないですね。疑ってごめんなさい。

んでとりあえず表示させるには hudson/scripts にある hudson-behavior.js の L942 を以下のように修正すればいいです。

    "DIV.loading" : function(e) { if (!/\byui-/.test(e.className)) e.style.display = 'none' }
  • -

追記(5/13)
次バージョンで修正済みとのことです。
http://twitter.com/kohsukekawa/statuses/13879848072

こういう問題を防ぐには

どうしたらいいでしょう?

  • ライブラリやフレームワークが良くあるフレーズのクラス名を扱う場合には十分気をつける。

ううん。「気をつける」というフレーズに具体性が無くてイヤですね。

「良くあるフレーズを避ける」と言ってしまうとちょっと自由度が無さすぎな感じ。スタイルを当てるときって

#statistics div.loading { ... }

とか

div.yui-content.loading { ... }

みたいに「固有のセレクタ+良くあるフレーズ」のように組み合わせて使うことが多いのですよね。
というわけで

  • 良くあるフレーズのクラス名だけにスタイルを適用する場合は影響範囲を確認する(できないならやらない)。

という感じでしょうか。少なくとも display:none とか visivility:hidden は避けたほうがいいでしょうね。
気をつけたいと思います。