|
@@ -1,76 +1,42 @@
|
|
|
-SELECT 'dynamic' AS component, sqlpage.run_sql('sqlpage/theme.sql') AS properties;
|
|
|
-SELECT 'dynamic' AS component, sqlpage.run_sql('sqlpage/Style.sql') AS properties;
|
|
|
+
|
|
|
SET ":filter_config" = '[
|
|
|
+ {"name": "expiry", "type": "hidden"},
|
|
|
+ {"name": "value", "type": "hidden"},
|
|
|
{"name": "type", "label": "Type", "type": "select"},
|
|
|
{"name": "expired", "label": "Show Expired",
|
|
|
- "type": "checkbox"
|
|
|
+ "type": "checkbox", "value": "true",
|
|
|
+ "width": 2
|
|
|
},
|
|
|
{"name": "used", "label": "Show Used",
|
|
|
- "type": "checkbox"
|
|
|
+ "type": "checkbox", "value": "true",
|
|
|
+ "width": 2
|
|
|
}
|
|
|
]';
|
|
|
-SET ":filter_options" = (SELECT group_concat(v) FROM (
|
|
|
- SELECT DISTINCT 'store' AS ka, store AS v FROM code_detail
|
|
|
- UNION
|
|
|
- SELECT DISTINCT 'type' AS ka, type AS v FROM code_detail
|
|
|
- ) q);
|
|
|
-SELECT 'debug' aS component; SELECT :filter_options AS options;
|
|
|
-SET filter_options = (
|
|
|
- SELECT json_group_array(json_object('name', q.k, 'options', q.o))
|
|
|
- FROM (
|
|
|
- SELECT options.k, json_group_array(
|
|
|
- json_object('label', v, 'value', v, 'selected', c == 1)
|
|
|
- ORDER BY v) o
|
|
|
- FROM (
|
|
|
- SELECT DISTINCT 'store' k, store v, count(store) OVER () c FROM code_detail
|
|
|
- UNION
|
|
|
- SELECT DISTINCT 'type' k, type v, count(type) OVER () c FROM code_detail
|
|
|
- ) options
|
|
|
- WHERE v IS NOT NULL
|
|
|
- GROUP BY options.k
|
|
|
- ) q
|
|
|
-);
|
|
|
-SELECT 'form' AS component
|
|
|
-, '/code.sql' AS action
|
|
|
-, 'Apply' AS validate
|
|
|
-, $tabler_color AS validate_color
|
|
|
-, 'get' AS method
|
|
|
-;
|
|
|
-SELECT j.v->>'name' AS name
|
|
|
|
|
|
-, COALESCE(c.v->>'label', j.v->>'label') AS label
|
|
|
-, COALESCE(c.v->>'type', j.v->>'type') AS type
|
|
|
-, j.v->>'dropdown' AS dropdown
|
|
|
-, j.v->>'multiple' AS multiple
|
|
|
-, COALESCE(c.v->>'width', j.v->>'width') AS width
|
|
|
-, o.j->'options' AS options
|
|
|
-, COALESCE(j.v->>'value', v.v) AS value
|
|
|
-, CASE COALESCE(c.v->>'type', j.v->>'type')
|
|
|
- WHEN 'checkbox' THEN v.v = 'true'
|
|
|
- ELSE NULL
|
|
|
- END AS checked
|
|
|
-, j.v->>'formaction'
|
|
|
-FROM (SELECT value v FROM json_each(sqlpage.read_file_as_text('code/json/filters.json'))) j
|
|
|
-LEFT JOIN (SELECT value v FROM json_each($filter_config)) c
|
|
|
-ON (j.v->>'name' == c.v->>'name')
|
|
|
-LEFT JOIN (SELECT value j FROM json_each($filter_options::json)) o
|
|
|
-ON (o.j->>'name') = j.v->>'name'
|
|
|
-LEFT JOIN (SELECT "key" k, value v FROM json_each(sqlpage.variables())) v
|
|
|
-ON v.k = j.v->>'name'
|
|
|
-;
|
|
|
-SELECT 'table' AS component;
|
|
|
-SELECT c.hash, content, created
|
|
|
+SET ":validate" = 'Apply';
|
|
|
+SET ":action" = 'Apply';
|
|
|
+SET ":method" = 'get';
|
|
|
+SELECT 'dynamic' AS component, sqlpage.run_sql('code/form.sql') AS properties;
|
|
|
+
|
|
|
+SELECT 'list' AS component;
|
|
|
+SELECT COALESCE(type||' ','') || COALESCE(store||' ', '') || COALESCE(expiry, created) AS title
|
|
|
+, content AS description
|
|
|
+, '/code.sql?hash='||c.hash AS link
|
|
|
FROM code c
|
|
|
LEFT JOIN code_detail cd
|
|
|
ON c.hash = cd.hash
|
|
|
WHERE (
|
|
|
- cd.expiry IS NULL OR COALESCE($expired, 'false') == 'true' OR cd.expiry::date < datetime(CURRENT_TIMESTAMP, 'localtime')::date
|
|
|
+ cd.expiry IS NULL OR COALESCE($expired, 'false') = 'true' OR date(cd.expiry) > date(datetime(CURRENT_TIMESTAMP, 'localtime'))
|
|
|
) AND (
|
|
|
- cd.used IS NULL OR COALESCE($used, 'false') == 'true' OR NOT cd.used
|
|
|
+ cd.used IS NULL OR COALESCE($used, 'false') = 'true' OR cd.used||'' = 'false'
|
|
|
) AND (
|
|
|
cd.type IS NULL OR CASE COALESCE($type, '')
|
|
|
WHEN '' THEN TRUE
|
|
|
- ELSE COALESCE($type, '') = cd.type
|
|
|
+ ELSE $type = cd.type
|
|
|
+ END
|
|
|
+) AND (
|
|
|
+ cd.store IS NULL OR CASE COALESCE($store, '')
|
|
|
+ WHEN '' THEN TRUE
|
|
|
+ ELSE $store = cd.store
|
|
|
END
|
|
|
)
|
|
|
ORDER BY expiry, type, c.hash NULLS FIRST
|