From f20956ae91a2d00223308c67b250bd6c2847cdd3 Mon Sep 17 00:00:00 2001
From: Jaden Diefenbaugh <blakcap@users.noreply.github.com>
Date: Wed, 19 Apr 2017 16:16:59 +0200
Subject: [PATCH] cleanup report viewmode

---
 .../reports/app/directives/edit/tableItem.js  |  2 +-
 .../reports/app/directives/tableItem.js       |  4 +-
 .../app/directives/view/itemContainer.js      |  3 --
 .../reports/app/directives/view/layout.js     | 42 +++++++++++++------
 .../app/directives/view/panelContent.js       |  5 ---
 .../reports/app/directives/view/panelItems.js | 10 -----
 .../reports/app/directives/view/plotItem.js   |  6 +--
 .../reports/app/directives/view/tableItem.js  | 16 ++++---
 .../reports/app/directives/view/textItem.js   | 30 +++++++------
 9 files changed, 54 insertions(+), 64 deletions(-)

diff --git a/beat/web/reports/static/reports/app/directives/edit/tableItem.js b/beat/web/reports/static/reports/app/directives/edit/tableItem.js
index 9fba43f28..bdc3711e4 100644
--- a/beat/web/reports/static/reports/app/directives/edit/tableItem.js
+++ b/beat/web/reports/static/reports/app/directives/edit/tableItem.js
@@ -129,7 +129,7 @@ angular.module('reportApp')
 	class="panel-collapse collapse in"
 	role="tabpanel"
 	aria-labelledby="{{domId}}-heading">
-	<div table-item group='group' content='content' is-viewing-csv='isViewingCSV'></div>
+	<div table-item class='panel-body' group='group' content='content' is-viewing-csv='isViewingCSV'></div>
 </div>
 `
 	};
diff --git a/beat/web/reports/static/reports/app/directives/tableItem.js b/beat/web/reports/static/reports/app/directives/tableItem.js
index d602cc8d7..3105eb9e0 100644
--- a/beat/web/reports/static/reports/app/directives/tableItem.js
+++ b/beat/web/reports/static/reports/app/directives/tableItem.js
@@ -141,10 +141,10 @@ angular.module('reportApp')
 			};
 		},
 		template: `
-<div ng-if='isViewingCsv.val' class='panel-body'>
+<div ng-if='isViewingCsv.val'>
 	<pre>{{ getCSV() }}</pre>
 </div>
-<div ng-if='!isViewingCsv.val' class='panel-body' style='height: 100%; overflow-x: auto;'>
+<div ng-if='!isViewingCsv.val' style='height: 100%; overflow-x: auto;'>
 	<table class="table table-striped table-hover">
 		<thead>
 			<tr ui-sortable ng-model='fields'>
diff --git a/beat/web/reports/static/reports/app/directives/view/itemContainer.js b/beat/web/reports/static/reports/app/directives/view/itemContainer.js
index 3aed999c4..2950fbd6a 100644
--- a/beat/web/reports/static/reports/app/directives/view/itemContainer.js
+++ b/beat/web/reports/static/reports/app/directives/view/itemContainer.js
@@ -40,7 +40,6 @@ angular.module('reportApp')
 <div
 	group-table-item
 	ng-if="item.id.includes('table')"
-	class='panel panel-default'
 	group='group'
 	id='item.id'
 	content='item.content'
@@ -49,7 +48,6 @@ angular.module('reportApp')
 <div
 	group-plot-item
 	ng-if="item.id.includes('plot')"
-	class='panel panel-default'
 	group='group'
 	id='item.id'
 	content='item.content'
@@ -58,7 +56,6 @@ angular.module('reportApp')
 <div
 	group-text-item
 	ng-if="item.id.includes('text')"
-	class='panel panel-default'
 	group='group'
 	report-item='item'
 	>
diff --git a/beat/web/reports/static/reports/app/directives/view/layout.js b/beat/web/reports/static/reports/app/directives/view/layout.js
index b04199a46..2a4f6675e 100644
--- a/beat/web/reports/static/reports/app/directives/view/layout.js
+++ b/beat/web/reports/static/reports/app/directives/view/layout.js
@@ -33,24 +33,40 @@ angular.module('reportApp').directive("groupsLayout", ['GroupsService', function
 		},
 		link: function(scope, el, attr){
 			scope.groups = GroupsService.groups;
+			scope.isEmptyReportItem = (item) => {
+				if(!Object.keys(item).includes('content') || !item.content) {
+					return true;
+				}
+
+				const thing = item.content;
+
+				const isEmptyStr = (typeof thing === 'string' || thing instanceof String) && thing === '';
+				const isEmptyObj = Object.keys(thing).length === 0;
+				const isEmptyArr = Array.isArray(thing) && thing.length === 0;
+
+				return isEmptyStr || isEmptyObj || isEmptyArr;
+			};
 		},
 		template: `
 <div class='panel panel-default'>
-<div id="content-layout-heading" class="panel-heading" role="tab">
-	<h4 class="panel-title">
-		Content
-	</h4>
-</div>
-<div id='content-layout-body' class='panel-body'>
-	<div id='groupsLayout' class='panel-group'>
-		<div
-			group-panel-content
-			ng-repeat='group in groups track by $index'
+	<div id="content-layout-heading" class="panel-heading" role="tab">
+		<h4 class="panel-title">
+			Content
+		</h4>
+	</div>
+	<ul
+		class='list-group'
+		ng-repeat='group in groups'
+		>
+		<group-item-container
+			class='list-group-item'
+			ng-if='!isEmptyReportItem(item)'
+			ng-repeat='item in group.reportItems track by $index'
 			group='group'
+			report-item='item'
 			>
-		</div>
-	</div>
-</div>
+		</group-item-container>
+	</ul>
 </div>
 `
 	};
diff --git a/beat/web/reports/static/reports/app/directives/view/panelContent.js b/beat/web/reports/static/reports/app/directives/view/panelContent.js
index 8fb5f28c1..29940bcc4 100644
--- a/beat/web/reports/static/reports/app/directives/view/panelContent.js
+++ b/beat/web/reports/static/reports/app/directives/view/panelContent.js
@@ -33,11 +33,6 @@ angular.module('reportApp').directive("groupPanelContent", ['GroupsService', fun
 		link: function(scope){
 		},
 		template: `
-<div
-	ng-if='group.experiments.length > 0'
-	group-panel-items
-	group='group'>
-</div>
 `
 	};
 }]);
diff --git a/beat/web/reports/static/reports/app/directives/view/panelItems.js b/beat/web/reports/static/reports/app/directives/view/panelItems.js
index 4d8161c9e..b805824dd 100644
--- a/beat/web/reports/static/reports/app/directives/view/panelItems.js
+++ b/beat/web/reports/static/reports/app/directives/view/panelItems.js
@@ -33,16 +33,6 @@ angular.module('reportApp').directive("groupPanelItems", [function(){
 		link: function(scope){
 		},
 		template: `
-<div>
-	<div
-		group-item-container
-		ng-repeat='item in group.reportItems track by $index'
-		group='group'
-		report-item='item'
-		style='margin-bottom: 5px;'
-		>
-	</div>
-</div>
 `
 	};
 }]);
diff --git a/beat/web/reports/static/reports/app/directives/view/plotItem.js b/beat/web/reports/static/reports/app/directives/view/plotItem.js
index d853e8920..96cd0055e 100644
--- a/beat/web/reports/static/reports/app/directives/view/plotItem.js
+++ b/beat/web/reports/static/reports/app/directives/view/plotItem.js
@@ -43,11 +43,7 @@ angular.module('reportApp')
 			});
 		},
 		template: `
-<div class='panel-body'>
-	<div class='panel-body'>
-		<div id='{{ renderDivId }}'></div>
-	</div>
-</div>
+<div id='{{ renderDivId }}'></div>
 `
 	};
 }]);
diff --git a/beat/web/reports/static/reports/app/directives/view/tableItem.js b/beat/web/reports/static/reports/app/directives/view/tableItem.js
index 39bd27a0f..318131645 100644
--- a/beat/web/reports/static/reports/app/directives/view/tableItem.js
+++ b/beat/web/reports/static/reports/app/directives/view/tableItem.js
@@ -45,18 +45,16 @@ angular.module('reportApp')
 			};
 		},
 		template: `
-<div class='panel-body'>
-	<div class='row'>
-		<div class='col-sm-12'>
-			<div class="btn-group" role="group" role='tab'>
-				<button class='btn btn-default' ng-click='toggleViewingCSV()'>
-					Toggle CSV View
-				</button>
-			</div>
+<div class='row'>
+	<div class='col-sm-12'>
+		<div class="btn-group pull-right" role="group" role='tab'>
+			<button class='btn btn-primary' ng-click='toggleViewingCSV()'>
+				Toggle CSV View
+			</button>
 		</div>
 	</div>
-	<div table-item group='group' content='content' is-viewing-csv='isViewingCSV'></div>
 </div>
+<div table-item group='group' content='content' is-viewing-csv='isViewingCSV'></div>
 `
 	};
 }]);
diff --git a/beat/web/reports/static/reports/app/directives/view/textItem.js b/beat/web/reports/static/reports/app/directives/view/textItem.js
index 23650951a..ceb725593 100644
--- a/beat/web/reports/static/reports/app/directives/view/textItem.js
+++ b/beat/web/reports/static/reports/app/directives/view/textItem.js
@@ -63,24 +63,22 @@ angular.module('reportApp')
 			scope.compileContent();
 		},
 		template: `
-<div class='panel-body'>
-	<div class='row'>
-		<div class='col-sm-12'>
-			<div class="btn-group" role="group" role='tab'>
-				<!-- dont show split view, just toggle between html/rst view !-->
-				<button class='btn btn-default' ng-click='isViewingSrc.val = !isViewingSrc.val'>
-					Toggle Source View
-				</button>
-			</div>
+<div class='row'>
+	<div class='col-sm-12'>
+		<div class="btn-group pull-right" role="group" role='tab'>
+			<!-- dont show split view, just toggle between html/rst view !-->
+			<button class='btn btn-primary' ng-click='isViewingSrc.val = !isViewingSrc.val'>
+				Toggle Source View
+			</button>
 		</div>
 	</div>
-	<div class='row' style='margin-top: 5px;'>
-		<div class='col-sm-12'>
-			<div ng-if='!isViewingSrc.val' ng-bind-html='trustAsHtml(compiledContent.val)'></div>
-			<div ng-if='isViewingSrc.val'>
-				<i>Readonly view</i>
-				<ui-codemirror ng-model='item.content' ui-codemirror-opts='srccmOptions'></ui-codemirror>
-			</div>
+</div>
+<div class='row' style='margin-top: 5px;'>
+	<div class='col-sm-12'>
+		<div ng-if='!isViewingSrc.val' ng-bind-html='trustAsHtml(compiledContent.val)'></div>
+		<div ng-if='isViewingSrc.val'>
+			<i>Readonly view</i>
+			<ui-codemirror ng-model='item.content' ui-codemirror-opts='srccmOptions'></ui-codemirror>
 		</div>
 	</div>
 </div>
-- 
GitLab