All Downloads are FREE. Search and download functionalities are using the official Maven repository.

www.js.directives.inspect.table.js Maven / Gradle / Ivy

// Generated by CoffeeScript 1.5.0
(function() {
  var module;

  module = angular.module('h2o.directives.inspect');

  module.directive("inspectTable", function($parse) {
    return {
      restrict: 'A',
      link: function(scope, element, attrs) {
        var datasetModel, headerClassmapModel, headersModel, reload, summariesModel, tbody, thead, thead_tr, vis;
        datasetModel = $parse(attrs.dataset);
        headersModel = $parse(attrs.headers);
        summariesModel = $parse(attrs.summaries);
        headerClassmapModel = $parse(attrs.headerClassmap);
        vis = d3.select(element[0]);
        thead = vis.append("thead");
        tbody = vis.append("tbody");
        thead_tr = thead.append("tr");
        reload = function() {
          var dataCells, dataCellsFuncs, dataRows, dataRowsFuncs, prepareRowFunction, prepareSummaryFunction, summaryCells, summaryCellsFuncs, summaryRows, summaryRowsFuncs, thFuncs, update,
            _this = this;
          if ((headersModel(scope) == null) || (datasetModel(scope) == null)) {
            return;
          }
          prepareSummaryFunction = function(row) {
            return function(column) {
              var klass, value;
              if (column.name === "row") {
                value = row[1];
              } else {
                value = column[row[0]];
              }
              if (!column.shown) {
                klass = "hidden";
              } else {
                if (value !== "0" && value !== 0 && row[1] === 'N/A' && value !== "N/A") {
                  klass = "na";
                }
              }
              return {
                klass: klass,
                value: value
              };
            };
          };
          prepareRowFunction = function(row) {
            return function(column) {
              var klass, value;
              value = row[column.name];
              klass = "";
              if (!column.shown) {
                klass = "hidden";
              } else {
                if (value === "NA") {
                  klass = "na";
                }
              }
              return {
                value: value,
                klass: klass
              };
            };
          };
          update = function(items, funcDict) {
            var added, removed, updated;
            added = items.enter();
            removed = items.exit();
            updated = items;
            funcDict.update(items);
            funcDict.update(funcDict.style(funcDict.add(added)));
            return funcDict.remove(removed);
          };
          thFuncs = {
            add: function(item) {
              return item.append("th");
            },
            remove: function(item) {
              return item.remove();
            },
            update: function(item) {
              return item.html(function(c) {
                return c.visual;
              }).attr("data-header", function(c) {
                return c.name;
              }).attr("class", function(c) {
                var _ref;
                return (_ref = headerClassmapModel(scope)[c.name]) != null ? _ref : "";
              }).style("display", function(c) {
                var _ref;
                if ((_ref = c.shown) != null ? _ref : true) {
                  return "table-cell";
                } else {
                  return "none";
                }
              });
            },
            style: function(item) {
              return item;
            }
          };
          summaryRowsFuncs = {
            add: function(item) {
              return item.append("tr");
            },
            remove: function(item) {
              return item.remove();
            },
            update: function(item) {
              return item;
            },
            style: function(item) {
              return item.attr("data-type", "summary").attr('class', function(c) {
                return "summary " + c[0];
              });
            }
          };
          dataRowsFuncs = {
            add: function(item) {
              return item.append("tr");
            },
            remove: function(item) {
              return item.remove();
            },
            update: function(item) {
              return item;
            },
            style: function(item) {
              return item.attr("data-type", "data").attr('class', function(c) {
                return "row" + c.row;
              });
            }
          };
          summaryCellsFuncs = {
            add: function(item) {
              return item.append("td");
            },
            remove: function(item) {
              return item.remove();
            },
            update: function(item) {
              return item.attr('class', function(item) {
                return item.klass;
              }).html(function(item) {
                return item.value;
              });
            },
            style: function(item) {
              return item;
            }
          };
          dataCellsFuncs = {
            add: function(item) {
              return item.append("td");
            },
            remove: function(item) {
              return item.remove();
            },
            update: function(item) {
              return item.attr('class', function(item) {
                return item.klass;
              }).html(function(item) {
                return item.value;
              });
            },
            style: function(item) {
              return item;
            }
          };
          update(thead_tr.selectAll("th").data(headersModel(scope)), thFuncs);
          summaryRows = tbody.selectAll("tr[data-type=\"summary\"]").data(summariesModel(scope));
          dataRows = tbody.selectAll("tr[data-type=\"data\"]").data(datasetModel(scope));
          update(summaryRows, summaryRowsFuncs);
          update(dataRows, dataRowsFuncs);
          summaryCells = summaryRows.selectAll("td").data(function(row) {
            return headersModel(scope).map(prepareSummaryFunction(row));
          });
          dataCells = dataRows.selectAll("td").data(function(row) {
            return headersModel(scope).map(prepareRowFunction(row));
          });
          update(summaryCells, summaryCellsFuncs);
          update(dataCells, dataCellsFuncs);
          return element.trigger("didReload");
        };
        return scope.$watch(headersModel, function(newVal, oldVal) {
          if (!newVal) {
            return;
          }
          return reload();
        });
      }
    };
  });

}).call(this);




© 2015 - 2025 Weber Informatics LLC | Privacy Policy