From 7200484dcfbdbc9e09fcd1c3cbeefbad6bc5b2f6 Mon Sep 17 00:00:00 2001
From: 2427021 <s.a.vink@students.uu.nl>
Date: Thu, 28 Mar 2024 12:30:40 +0100
Subject: [PATCH] feat(visManager): asana link

---
 libs/shared/lib/vis/configuration/panel.tsx | 144 +++++++++++---------
 1 file changed, 80 insertions(+), 64 deletions(-)

diff --git a/libs/shared/lib/vis/configuration/panel.tsx b/libs/shared/lib/vis/configuration/panel.tsx
index d635719bd..f6d1fb4ba 100644
--- a/libs/shared/lib/vis/configuration/panel.tsx
+++ b/libs/shared/lib/vis/configuration/panel.tsx
@@ -14,75 +14,91 @@ export function ConfigPanel({ manager }: Props) {
   const session = useSessionCache();
 
   return (
-    <div className="w-full h-full flex flex-col border">
-      {manager.active ? (
-        <>
-          <div className="border-b border-secondary-200 py-2">
-            <div className="flex justify-between items-center px-4 py-2">
-              <span className="text-xs font-bold">Visualisation</span>
-              <Button
-                type="secondary"
-                variant="ghost"
-                size="xs"
-                iconComponent={<Delete />}
-                onClick={() => {
-                  if (manager.active) manager.deleteVisualization(manager.active);
-                }}
-              />
-            </div>
-            <div className="flex justify-between items-center px-4 py-1">
-              <span className="text-xs font-normal">Type</span>
-              <div className="w-36">
-                <Input type="dropdown" size="xs" options={VISUALIZATION_TYPES} value={manager.active} onChange={() => {}} />
+    <div className="w-full h-full flex flex-col border justify-between">
+      <div>
+        {manager.active ? (
+          <>
+            <div className="border-b border-secondary-200 py-2">
+              <div className="flex justify-between items-center px-4 py-2">
+                <span className="text-xs font-bold">Visualisation</span>
+                <Button
+                  type="secondary"
+                  variant="ghost"
+                  size="xs"
+                  iconComponent={<Delete />}
+                  onClick={() => {
+                    if (manager.active) manager.deleteVisualization(manager.active);
+                  }}
+                />
+              </div>
+              <div className="flex justify-between items-center px-4 py-1">
+                <span className="text-xs font-normal">Type</span>
+                <div className="w-36">
+                  <Input type="dropdown" size="xs" options={VISUALIZATION_TYPES} value={manager.active} onChange={() => {}} />
+                </div>
+              </div>
+              <div className="flex justify-between items-center px-4 py-1">
+                <span className="text-xs font-normal">Name</span>
+                <input type="text" className="border rouded text-xs w-36" value={manager.active} onChange={() => {}} />
               </div>
             </div>
-            <div className="flex justify-between items-center px-4 py-1">
-              <span className="text-xs font-normal">Name</span>
-              <input type="text" className="border rouded w-36" value={manager.active} onChange={() => {}} />
-            </div>
-          </div>
-          {manager.active && (
-            <div className="border-b border-secondary-200 p-4">
-              <SettingsHeader name="Configuration" />
-              {manager.renderSettings()}
-            </div>
-          )}
-        </>
-      ) : (
-        <div>
-          {session && session.currentSaveState && (
+            {manager.active && (
+              <div className="border-b border-secondary-200 p-4">
+                <SettingsHeader name="Configuration" />
+                {manager.renderSettings()}
+              </div>
+            )}
+          </>
+        ) : (
+          <div>
+            {session && session.currentSaveState && (
+              <div className="flex flex-col p-4 border-b border-secondary-200">
+                <span className="text-sm font-bold">Connection details</span>
+                <span className="text-xs">Database: {session.saveStates[session.currentSaveState].name}</span>
+                <span className="text-xs">Port: {session.saveStates[session.currentSaveState].db.port}</span>
+                <span className="text-xs">Protocol: {session.saveStates[session.currentSaveState].db.protocol}</span>
+              </div>
+            )}
             <div className="flex flex-col p-4 border-b border-secondary-200">
-              <span className="text-sm font-bold">Connection details</span>
-              <span className="text-xs">Database: {session.saveStates[session.currentSaveState].name}</span>
-              <span className="text-xs">Port: {session.saveStates[session.currentSaveState].db.port}</span>
-              <span className="text-xs">Protocol: {session.saveStates[session.currentSaveState].db.protocol}</span>
-            </div>
-          )}
-          <div className="flex flex-col p-4 border-b border-secondary-200">
-            <span className="text-sm font-bold">Sessions</span>
-            {Object.entries(session.saveStates).map(([id, info]) => (
-              <div key={id} className="flex justify-between items-center">
-                <span className="text-xs font-normal truncate">{id.slice(0, 15)}...</span>
-                <div className="flex -space-x-4 rtl:space-x-reverse">
-                  {info.share_state.users.slice(0, 2).map((user: string) => (
-                    <div
-                      key={user}
-                      className="relative inline-flex items-center justify-center w-5 h-5 overflow-hidden bg-secondary-500 rounded-full"
-                    >
-                      <Icon component={<Person />} size={12} />
-                    </div>
-                  ))}
-                  {info.share_state.users.length > 3 && (
-                    <div className="flex items-center justify-center w-5 h-5 text-xs font-medium text-white bg-gray-700 border-2 border-white rounded-full hover:bg-gray-600 dark:border-gray-800">
-                      +2
-                    </div>
-                  )}
+              <span className="text-sm font-bold">Sessions</span>
+              {Object.entries(session.saveStates).map(([id, info]) => (
+                <div key={id} className="flex justify-between items-center">
+                  <span className="text-xs font-normal truncate">{id.slice(0, 15)}...</span>
+                  <div className="flex -space-x-4 rtl:space-x-reverse">
+                    {info.share_state.users.slice(0, 2).map((user: string) => (
+                      <div
+                        key={user}
+                        className="relative inline-flex items-center justify-center w-5 h-5 overflow-hidden bg-secondary-500 rounded-full"
+                      >
+                        <Icon component={<Person />} size={12} />
+                      </div>
+                    ))}
+                    {info.share_state.users.length > 3 && (
+                      <div className="flex items-center justify-center w-5 h-5 text-xs font-medium text-white bg-gray-700 border-2 border-white rounded-full hover:bg-gray-600 dark:border-gray-800">
+                        +2
+                      </div>
+                    )}
+                  </div>
                 </div>
-              </div>
-            ))}
+              ))}
+            </div>
           </div>
-        </div>
-      )}
+        )}
+      </div>
+
+      <Button
+        type="primary"
+        variant="outline"
+        size="xs"
+        label="Report an issue"
+        onClick={() =>
+          window.open(
+            'https://app.asana.com/-/login?u=https%3A%2F%2Fform.asana.com%2F%3Fk%3D2QEC88Dl7ETs2wYYWjkMXg%26d%3D1206648675960041&error=01',
+            '_blank',
+          )
+        }
+        additionalClasses="m-2"
+      />
     </div>
   );
 }
-- 
GitLab