From 0774f3edfac4beecc56e4690700213c9bd900b35 Mon Sep 17 00:00:00 2001
From: David Beniamine <david.beniamine@tetras-libre.fr>
Date: Wed, 9 Feb 2022 09:46:19 +0100
Subject: [PATCH] Refactor + css colors coherent + fix bug double open mosaic

---
 capsule-prototype/css/online-theme.css |  33 ++++++++--------
 capsule-prototype/js/online-script.js  |  52 +++++++++++++------------
 legacy/create.zip                      | Bin 58196 -> 58328 bytes
 3 files changed, 45 insertions(+), 40 deletions(-)

diff --git a/capsule-prototype/css/online-theme.css b/capsule-prototype/css/online-theme.css
index 98202ca..44648b6 100644
--- a/capsule-prototype/css/online-theme.css
+++ b/capsule-prototype/css/online-theme.css
@@ -302,7 +302,7 @@ html, body {
 }
 
 #popupMosaic {
-    background: #243538;
+	background: #243538;
 	box-shadow:				0 1px 3px rgba(0,0,0,.2) inset;  
 	border:					0;   
 	border-radius:			3px;     
@@ -322,26 +322,27 @@ html, body {
 }
 
 .mosaic_category {
-    display: grid;
-    grid-template-columns: repeat(auto-fit, minmax(125px, 1fr));
-    grid-auto-rows: 150px;
-    border-radius: 3px;
-    padding: 1.0em 1vw;
-    margin: 2vh 0 1.5vh 0;
+	display: grid;
+	grid-template-columns: repeat(auto-fit, minmax(125px, 1fr));
+	background:				rgba(0,0,0,.15); 
+	grid-auto-rows: 150px;
+	border-radius: 3px;
+	padding: 1.0em 1vw;
+	margin: 2vh 0 1.5vh 0;
 }
 
 .mosaic_item img {
-    /* To correctly align image, regardless of content height: */
-    vertical-align: top;
-    display: inline-block;
-    /* To horizontally center images and caption */
-    text-align: center;
-    /* The width of the container also implies margin around the images. */
-    width: 100px;
-    margin: 2vh 0 1.5vh 0;
+	/* To correctly align image, regardless of content height: */
+	vertical-align: top;
+	display: inline-block;
+	/* To horizontally center images and caption */
+	text-align: center;
+	/* The width of the container also implies margin around the images. */
+	width: 100px;
+	margin: 2vh 0 1.5vh 0;
 }
 .mosaic_item .caption {
-    display:block;
+	display:block;
 }
 
 
diff --git a/capsule-prototype/js/online-script.js b/capsule-prototype/js/online-script.js
index e68d867..dd0c8a2 100644
--- a/capsule-prototype/js/online-script.js
+++ b/capsule-prototype/js/online-script.js
@@ -816,33 +816,27 @@ function closeEdit() {
 
 function openMosaic() {
     function getMosaicItem(tagOrDoc) {
-            let path = Utils.getPreviewPath(tagOrDoc);
-            let name = tagOrDoc.getMetadata("Rekall->Name");
-            let type = tagOrDoc.getMetadata("Rekall->Type");
-            let url ='';
-        if (typeof path === 'undefined') {
-            if (type =='rekall/link') {
-                url = "../shared/css/images/img-link.png";
-            } else {
-                url = "../shared/css/images/img-note.png";
-            }
+        let path = Utils.getPreviewPath(tagOrDoc);
+        let name = tagOrDoc.getMetadata("Rekall->Name");
+        let url ='';
+        if ('undefined' === typeof path) {
+            let icon = ('rekall/link' === tagOrDoc.getMetadata("Rekall->Type")) ? "link" : "note";
+            url = "../shared/css/images/img-"+icon+".png";
         } else {
             url = path;
         }
-        let div=$('<div/>').addClass('mosaic_item')
+        let div=$('<div/>').addClass('mosaic_item').on('click', function() {tagOrDoc.openPopupEdit();});
         div.append($('<img/>').attr('src', url));
         div.append($('<span/>').addClass('caption').text(name));
-        div.on('click', function() {tagOrDoc.openPopupEdit();});
         return div;
     }
 
 	$("#popupMosaicSpace").show();  
     let container = $('#popupMosaicMosaic');
+    container.html('');
     // TODO is there a better way to iterate over tags or documents ?
     for ( let [k, v] of  Object.entries(rekall.sortings.colors.categories)) {
-        let category = $('<div/>');
-        category.addClass('mosaic_category');
-        category.css('background', v.color);
+        let category = $('<div/>').addClass('mosaic_category').css('background', getTagGradientColor(v));
         for (let i in v.tags){
             category.append(getMosaicItem(v.tags[i]));
         }
@@ -850,6 +844,24 @@ function openMosaic() {
     }
 }
 
+function getTagGradientColor(tag) {
+	var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;  // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera)
+	var isFirefox = typeof InstallTrigger !== 'undefined';   // Firefox 1.0+
+	var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;   // At least Safari 3+: "[object HTMLElementConstructor]"
+	var isChrome = !!window.chrome && !isOpera;              // Chrome 1+
+	var isIE = /*@cc_on!@*/false || !!document.documentMode; // At least IE6
+
+    if(isOpera) {
+        return  "-o-linear-gradient(right bottom,  rgba(20,46,51,1) 0%, "+tag.color+" 100%)";
+    }
+    if(isFirefox) {
+        return "-moz-linear-gradient(right bottom,  rgba(20,46,51,1) 0%, "+tag.color+" 100%)";          
+    }
+    if((isSafari)||(isChrome)){
+        return "-webkit-linear-gradient(right bottom,  rgba(20,46,51,1) 0%, "+tag.color+" 100%)"; 
+    }
+}
+
 function closeMosaic() {
 	$("#popupMosaicSpace").hide();  
 }
@@ -866,17 +878,9 @@ function fillPopupEdit(tag) {
 	$("#popupTC").css("background",tag.color); 
 	/*$("#popupType").css("color",tag.color);*/
 
-	var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;  // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera)
-	var isFirefox = typeof InstallTrigger !== 'undefined';   // Firefox 1.0+
-	var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;   // At least Safari 3+: "[object HTMLElementConstructor]"
-	var isChrome = !!window.chrome && !isOpera;              // Chrome 1+
-	var isIE = /*@cc_on!@*/false || !!document.documentMode; // At least IE6
-
 	var bgColorLeft = tag.color.replace(/rgb/g, "rgba").replace(/\)/g, ",.35)");
 	
-    if(isOpera) bgColorLeft = "-o-linear-gradient(right bottom,  rgba(20,46,51,1) 0%, "+tag.color+" 100%)";
-    else if(isFirefox) bgColorLeft = "-moz-linear-gradient(right bottom,  rgba(20,46,51,1) 0%, "+tag.color+" 100%)";          
-    else if((isSafari)||(isChrome))  bgColorLeft = "-webkit-linear-gradient(right bottom,  rgba(20,46,51,1) 0%, "+tag.color+" 100%)"; 
+    bgColorLeft = getTagGradientColor(tag);
 	
 	$("#popupLeft").css("background",bgColorLeft);
 
diff --git a/legacy/create.zip b/legacy/create.zip
index a2a703ea770860eb81d342239f65d7a857384d5a..4b2f2211e0693a3b02976ec59b92cf7ce0977b19 100644
GIT binary patch
delta 3468
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
Mu`w`k+yz+-0JZRn@Bjb+

delta 3308
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

-- 
GitLab