3 Achegas badd96c0f0 ... afbedc6476

Autor SHA1 Mensaxe Data
  Pi afbedc6476 UI improvements hai 3 semanas
  Pi 3f789e9d9a Merge Name/Number cell hai 3 semanas
  Pi 83f342c95d remove unused options hai 3 semanas
Modificáronse 4 ficheiros con 40 adicións e 84 borrados
  1. 17 31
      site/conversations.sql
  2. 20 15
      site/messages.sql
  3. 1 1
      site/static/manifest.json
  4. 2 37
      site/theme.sql

+ 17 - 31
site/conversations.sql

@@ -1,42 +1,30 @@
-SELECT 'table' AS component
-, '/conv?me='||:me||'&peer={id}' AS edit_url
-, TRUE AS search
+SELECT 'card' as component
+, 1 AS columns
 ;
-SELECT peer AS "Peer"
-, c.name AS "Name"
-, max(ts) AS ts
-, SUBSTR("Peer", 3, LENGTH("Peer")) AS _sqlpage_id
+SELECT COALESCE(c.name, SUBSTR(peer, 3, LENGTH(peer))) AS title
+, max(ts) AS footer
+, group_concat(msg, ' … ' ORDER BY ts ASC) AS description
+, '/conv?me='||:me||'&peer='||SUBSTR("Peer", 3, LENGTH("Peer"))  AS link
 FROM (
-  SELECT CASE WHEN "from" = '+1'||:me
-  THEN "to" ELSE "from"
-  END AS peer,
-  received AS ts
+  SELECT "from" AS peer
+  , received AS ts
+  , CASE WHEN received = max(received)OVER(PARTITION BY "to", "from") THEN payload->>'$.payload.text' ELSE NULL END AS msg
   FROM inbox
+  WHERE "to" = '+1'||:me
   UNION
-  SELECT CASE WHEN "from" = '+1'||:me
-  THEN "to" ELSE "from"
-  END AS peer,
-  sent AS ts
+  SELECT "to" AS peer
+  , sent AS ts
+  , CASE WHEN sent = max(sent)OVER(PARTITION BY "to", "from") THEN payload ELSE NULL END AS msg
   FROM outbox
+  WHERE "from" = '+1'||:me
+
+  ORDER BY ts
 ) q
 LEFT JOIN contacts c ON c.number = q.peer
 GROUP BY "Peer"
-ORDER BY ts DESC, "Peer"
+ORDER BY footer DESC, title
 ;
 
-SET ":to_options" = (SELECT json_group_array(
-      json_object('label', SUBSTR(v, 3, LENGTH(v)), 'value', SUBSTR(v, 3, LENGTH(v)), 'selected', FALSE)
-  )
-  FROM (
-    SELECT "from" AS v FROM inbox
-    UNION
-    SELECT "to" FROM inbox
-    UNION
-    SELECT "from" FROM outbox
-    UNION
-    SELECT "to" FROM outbox
-  ) q
-);
 --SELECT 'debug' AS component;
 --SELECT :to_options AS options;
 
@@ -59,8 +47,6 @@ SELECT 'to' AS name
 , 'To' AS label
 , 'input' AS type
 , '5553214321' AS placeholder
---, 'select' AS type
---, :to_options AS options
 , 3 AS width
 ;
 SELECT 'Write a short message...' AS placeholder

+ 20 - 15
site/messages.sql

@@ -1,18 +1,3 @@
-SELECT 'table' AS component
-, TRUE AS search
-;
-SELECT "from" AS "from", c.name AS "Name", received AS ts, json(payload)->>'$.payload.text' AS message
-FROM inbox i
-LEFT JOIN contacts c ON c.number = i."from"
-WHERE '+1'||:peer = "from" AND '+1'||:me = "to"
-UNION
-SELECT "from" AS "from", c.name AS "Name", sent AS ts, payload AS message
-FROM outbox o
-LEFT JOIN contacts c ON c.number = o."from"
-WHERE '+1'||:peer = "to" AND '+1'||:me = "from"
-ORDER BY ts DESC
-;
-
 SELECT 'form' AS component
 , '/send.sql' AS action
 , 'green' AS validate_color
@@ -40,3 +25,23 @@ SELECT 'Write a short message...' AS placeholder
 , '' AS label
 , 2 AS rows
 ;
+
+SELECT 'card' as component
+, 1 AS columns
+;
+SELECT COALESCE(c.name, SUBSTR("from", 3, LENGTH("from"))) AS title
+, received AS footer, json(payload)->>'$.payload.text' AS description
+, 'blue' AS color
+FROM inbox i
+LEFT JOIN contacts c ON c.number = i."from"
+WHERE '+1'||:peer = "from" AND '+1'||:me = "to"
+UNION
+SELECT COALESCE(c.name, SUBSTR("from", 3, LENGTH("from"))) AS title
+, sent AS footer, payload AS description
+, 'green' AS color
+FROM outbox o
+LEFT JOIN contacts c ON c.number = o."from"
+WHERE '+1'||:peer = "to" AND '+1'||:me = "from"
+ORDER BY footer DESC
+;
+

+ 1 - 1
site/static/manifest.json

@@ -6,7 +6,7 @@
   "start_url": "/conv",
   "shortcuts": [ ],
   "scope": "/",
-  "theme_color": "#2fb344",
+  "theme_color": "orange",
   "background_color": "black",
   "display": "standalone",
   "icons": [

+ 2 - 37
site/theme.sql

@@ -8,41 +8,6 @@ SELECT 'shell' AS component
 , :image AS image
 , :favicon AS favicon
 , :manifest AS manifest
---, 'https://cdn.jsdelivr.net/npm/purecss@2.1.0/build/pure-min.css' AS css
---, 'https://shandan.one/css/'||:tool||'.css' AS css
--- , json('{
---     "title": "Home", "link": "/", "icon": "home"
---   }') AS menu_item
--- , json(CASE :tool
---   WHEN 'clip' THEN NULL
---   ELSE '{
---             "link": "/clip",
---             "title": "Clip and Paste",
---             "icon": "clipboard"
---         }'
---   END) AS menu_item
--- , json(CASE :tool
---   WHEN 'goto' THEN NULL
---   ELSE '{
---             "link": "/goto",
---             "title": "GotTo Tiny URL",
---             "icon": "link"
---         }'
---   END) AS menu_item
--- , json(CASE :tool
---   WHEN 'upload' THEN NULL
---   ELSE '{
---             "link": "/upload",
---             "title": "Share File",
---             "icon": "cloud-share"
---         }'
---   END) AS menu_item
--- , json(CASE :tool
---   WHEN 'code' THEN NULL
---   ELSE '{
---             "link": "/code",
---             "title": "Vouchers",
---             "icon": "barcode"
---         }'
---   END) AS menu_item
+, JSON('{"link":"/conv.sql","title":"Conversations","icon":"message"}') AS menu_item
+, JSON('{"link":"/cont.sql","title":"Contacts","icon":"address-book"}') AS menu_item
 ;