Files
Omni_wizard.db/udf_create_json_comps_blob.txt
2026-02-06 14:44:08 +08:00

104 lines
3.8 KiB
Plaintext

DELIMITER //
CREATE OR REPLACE FUNCTION udf_create_json_comps_blob(
p_FieldObject VARCHAR(200),
p_tblName VARCHAR(100),
p_FieldName VARCHAR(100)
)
RETURNS TEXT
/*
function : zen_create_json_comps_others 的 kernel udf, 處理一段共用元件的基本設定
description:
build date : 2023/12/22
modified : 2025/08/09 (轉換為 MariaDB 版本)
modify history
item who date modify docs
==== ========== ========== ================================================
1 michael 2023/12/22 根據 v1.0 重構
2 assistant 2025/08/09 轉換為 MariaDB 版本
*/
BEGIN
DECLARE v_blob_data TEXT;
DECLARE v_accept_type VARCHAR(200);
DECLARE v_u_type VARCHAR(200);
DECLARE v_ip VARCHAR(200);
DECLARE v_db VARCHAR(200);
DECLARE v_crlf VARCHAR(2);
SET v_crlf = CONCAT(CHAR(13), CHAR(10));
SET v_ip = '${ls:base_ip}';
SET v_db = '${ls:base_db}';
-- Input-image 和 file 會多一些 properties
-- input-file 有 "multiple": true, 但是測試有問題, 所以暫不支援
SET v_blob_data = '';
IF p_FieldObject = 'input-file' OR p_FieldObject = 'input-image' THEN
IF p_FieldObject = 'input-file' THEN
SET v_accept_type = '.pdf,.doc,.docx,.xls,.xlsx,.txt,.csv';
SET v_u_type = 'files';
ELSE
SET v_accept_type = '.jpg,.png,.jpeg';
SET v_u_type = 'images';
END IF;
SET v_blob_data = CONCAT(
' "accept": "', v_accept_type, '",', v_crlf,
' "//multiple": true,', v_crlf,
' "receiver": "', v_ip, '/upload/', v_db, '/', v_u_type, '/",', v_crlf
);
ELSEIF p_FieldObject = 'textarea' THEN
SET v_blob_data = CONCAT(
' "showCounter": true,', v_crlf
);
ELSEIF p_FieldObject = 'select' THEN
-- select 要分為2種, 一種是固定內容(直接產生 options), 另一種是動態讀取資料庫(select from source 如下)
SET v_blob_data = CONCAT(
' "source": {', v_crlf,
' "method": "post",', v_crlf,
' "url": "', v_ip, '/xapi/v2/', v_db, '/get_keyvalue/8/",', v_crlf,
' "data": {', v_crlf,
' "para01": "', p_tblName, '",', v_crlf,
' "para02": "', p_FieldName, '"', v_crlf,
' },', v_crlf,
' "dataType": "form"', v_crlf,
' },', v_crlf
);
ELSEIF p_FieldObject IN ('options', 'options-add', 'mapping') THEN
-- 新增 options-add, 可以臨時新增前端選項(不會存起來) 2022-10-01
-- 取得 key-value
SET v_blob_data = zen_get_keyvalue(p_tblName, p_FieldName);
IF p_FieldObject = 'options-add' THEN
SET v_blob_data = CONCAT(
' "creatable": true,', v_crlf,
' "addControls": [', v_crlf,
' {', v_crlf,
' "type": "text",', v_crlf,
' "name": "label",', v_crlf,
' "label": "選項標題"', v_crlf,
' },', v_crlf,
' {', v_crlf,
' "type": "text",', v_crlf,
' "name": "value",', v_crlf,
' "label": "選項值"', v_crlf,
' }', v_crlf,
' ],', v_crlf,
v_blob_data
);
END IF;
ELSEIF p_FieldObject = 'radios' THEN
-- 取得 key-value
SET v_blob_data = zen_get_keyvalue(p_tblName, p_FieldName);
ELSEIF p_FieldObject IN ('switch', 'checkbox') THEN
SET v_blob_data = CONCAT(
' "trueValue": "Y",', v_crlf,
' "falseValue": "N",', v_crlf
);
END IF;
RETURN IFNULL(v_blob_data, '');
END //
DELIMITER ;