Bri Prebilic Cole

GUI -- Scrollable table working!

Change-Id: I77eb1a620cfa64e44996e8eed09a6be9c9cda202
...@@ -22,21 +22,32 @@ ...@@ -22,21 +22,32 @@
22 'use strict'; 22 'use strict';
23 23
24 function setColWidth($log, t) { 24 function setColWidth($log, t) {
25 - var tHeaders, tdElement; 25 + var tHeaders, tdElement, colWidth;
26 26
27 - // for each th, set its width to td's width
28 - // do this by looping through each td in the first row
29 - // and finding its column width
30 tHeaders = t.selectAll('th'); 27 tHeaders = t.selectAll('th');
31 - //loop through selectAll array 28 +
32 - tHeaders.forEach(function(thElement){ 29 + // select each td in the first row and set the header's width to the
33 - tdElement = t.filter('nth-child()'); 30 + // corresponding td's width, if td is larger than header's width
34 - $log.log(thElement); 31 + tHeaders.each(function(thElement, index){
32 + thElement = d3.select(this);
33 +
34 + tdElement = t.select('td:nth-of-type(' + (index + 1) + ')');
35 + colWidth = tdElement.style('width');
36 +
37 + thElement.style('width', colWidth);
38 + tdElement.style('width', colWidth);
39 + //thElement.style('color', 'blue');
40 + //tdElement.style('color', 'red');
41 +
35 }); 42 });
36 } 43 }
37 44
38 function setCSS(thead, tbody) { 45 function setCSS(thead, tbody) {
39 - 46 + thead.style('display', 'block');
47 + tbody.style({'display': 'block',
48 + 'height': '100px',
49 + 'overflow': 'auto'
50 + });
40 } 51 }
41 52
42 function trimTable(tbody) { 53 function trimTable(tbody) {
...@@ -74,7 +85,7 @@ ...@@ -74,7 +85,7 @@
74 $timeout(function() { 85 $timeout(function() {
75 $log.log('timeout is over'); 86 $log.log('timeout is over');
76 fixTable($log, table, thead, tbody); 87 fixTable($log, table, thead, tbody);
77 - }, 200); 88 + });
78 } 89 }
79 }); 90 });
80 $log.log('fixedHeader directive has been created'); 91 $log.log('fixedHeader directive has been created');
...@@ -82,48 +93,3 @@ ...@@ -82,48 +93,3 @@
82 }; 93 };
83 }]); 94 }]);
84 }()); 95 }());
...\ No newline at end of file ...\ No newline at end of file
85 -
86 -$scope.$watch(function () { return $elem.find("tbody").is(':visible') },
87 - function (newValue, oldValue) {
88 - if (newValue === true) {
89 - // reset display styles so column widths are correct when measured below
90 - $elem.find('thead, tbody, tfoot').css('display', '');
91 -
92 - // wrap in $timeout to give table a chance to finish rendering
93 - $timeout(function () {
94 - // set widths of columns
95 - $elem.find('th').each(function (i, thElem) {
96 - thElem = $(thElem);
97 - var tdElems = $elem.find('tbody tr:first td:nth-child(' + (i + 1) + ')');
98 - var tfElems = $elem.find('tfoot tr:first td:nth-child(' + (i + 1) + ')');
99 -
100 - var columnWidth = tdElems.width();
101 - thElem.width(columnWidth);
102 - tdElems.width(columnWidth);
103 - tfElems.width(columnWidth);
104 - });
105 -
106 - // set css styles on thead and tbody
107 - $elem.find('thead, tfoot').css({
108 - 'display': 'block',
109 - });
110 -
111 - $elem.find('tbody').css({
112 - 'display': 'block',
113 - 'height': $scope.tableHeight || '400px',
114 - 'overflow': 'auto'
115 - });
116 -
117 - // reduce width of last column by width of scrollbar
118 - var scrollBarWidth = $elem.find('thead').width() - $elem.find('tbody')[0].clientWidth;
119 - if (scrollBarWidth > 0) {
120 - // for some reason trimming the width by 2px lines everything up better
121 - scrollBarWidth -= 2;
122 - $elem.find('tbody tr:first td:last-child').each(function (i, elem) {
123 - $(elem).width($(elem).width() - scrollBarWidth);
124 - });
125 - }
126 - });
127 - }
128 - });
129 -}
...\ No newline at end of file ...\ No newline at end of file
......