first commit
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
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 ;
|
||||
Reference in New Issue
Block a user