3

3 つの異なるコンピューター (マシン列に示されている) からのメトリック (名前、値) を表示する 3 つの列 (名前、値、マシン) を持つ ng-grid があります。メトリックごとに 3 行を表示するのではなくgroups: ['name']、gridOptions に設定しました。ただし、集計行に値の合計を表示する方法がわかりません。各グループの行の値にアクセスして合計を計算する方法はありますか?

これは私が見たいものです(値列の集計行の7、10、4、6):

  NAME           VALUE     MACHINE
v metric1 (3)    7
  metric1        3         comp-a
  metric1        2         comp-b
  metric1        2         comp-c
> metric2 (3)    10
> metric3 (3)    4
v metric4 (3)    6
  metric4        5         comp-a
  metric4        0         comp-b
  metric5        1         comp-c

ご協力いただきありがとうございます!

4

1 に答える 1

4

私はこの同じ問題に遭遇し、私が見つけたいくつかの提案された解決策を試しましたが、私が持っているグリッドのバージョンでは機能しませんでした. グリッド ソースを検索し、集計行に使用していたテンプレートを見つけてコピーし、微調整して、表示の一部のメソッドに関数の呼び出しを含めました。

私の gridOptions で、以下に示すプロパティを定義します

aggregateTemplate: "<div ng-click=\"row.toggleExpand()\" ng-style=\"rowStyle(row)\" class=\"ngAggregate\">" +
    "    <span class=\"ngAggregateText\"><span class='ngAggregateTextLeading'>{{row.totalChildren()}} {{row.label CUSTOM_FILTERS}} {{entryMaybePlural(row)}}</span><span>Total Weight: {{aggFunc(row)}} lbs {{AggItemsLabel}}</span></span>" +
    "    <div class=\"{{row.aggClass()}}\"></div>" +
    "</div>" +
    ""

グリッドのコントローラーのスコープには、次の機能があります

  $scope.aggFunc = function (row) {
    var total = 0;
    angular.forEach(row.children, function(cropEntry) {
      total+=cropEntry.entity.weight;
    });
    return total.toString();
  };
  $scope.entryMaybePlural = function (row) {
    if(row.children.length>1)
    {
      return "entries";
    }
    else
      return "entry";
  };

どちらの場合も、テンプレートの行をコントローラー スコープの関数に渡し、行の children というプロパティを確認します (他の試みではうまくいかなかったときに、Chrome デバッグ ツールを使用してこれを理解しました)。いい結果)。

PS私のグリッドには、バージョンはありませんが、このコンパイルコメントが上部にあります:|

/***********************************************
* ng-grid JavaScript Library
* Authors: https://github.com/angular-ui/ng-grid/blob/master/README.md 
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
* Compiled At: 06/03/2013 21:19
***********************************************/
于 2013-08-26T20:50:02.193 に答える