DELIMITER // CREATE OR REPLACE PROCEDURE zen_create_json_comps_block( IN p_uuid VARCHAR(100), IN p_FunctionTag VARCHAR(100), IN p_code_id VARCHAR(100), IN p_group VARCHAR(10), IN p_FieldBlock SMALLINT, IN p_block VARCHAR(2), IN p_rowid INT ) /* function : amis Wizard 產生 json UI 的核心程式(每個 Component 有各自的 json UI 定義) description: 本段 sp 主要是設定 input-text 中 view 部分的 json 定義(實在是太長了) 後來發現, 除了特殊的元件要獨立的 sp 特別處理外, 一般元件可以都統一在 input-text 的 sp 加上一些判斷即可 Build Date : 2023/12/20 Modified : 2025/08/09 (轉換為 MariaDB 版本) Modify History Item Who Date Modify Docs ==== ========== ========== ================================================ 1 Michael 2023/12/20 根據 v1.0 重構 2 Assistant 2025/08/09 轉換為 MariaDB 版本 */ BEGIN DECLARE v_gh TEXT; DECLARE v_gf TEXT; DECLARE v_bh TEXT; DECLARE v_bf TEXT; DECLARE v_blockname NVARCHAR(100); DECLARE v_bTab SMALLINT; DECLARE v_Tab1 VARCHAR(2); DECLARE v_crlf VARCHAR(2); DECLARE v_imax_block INT; DECLARE v_code_para VARCHAR(100); SET v_crlf = CONCAT(CHAR(13), CHAR(10)); -- 取得最大 FieldBlock 值 SELECT MAX(FieldBlock) INTO v_imax_block FROM zen_wizard_jsondata WHERE uuid = p_uuid; -- get code_para SET v_code_para = ''; IF p_code_id IN ('SingleEntry','SingleTabs','SinglePanels') THEN SELECT code_para INTO v_code_para FROM zen_Wizard_template WHERE code_id = 'SingleEntry'; -- Master-detail(支援 Tab 和 Panel 2種 UX -- 配合 Single Extend) ELSEIF p_code_id IN ('MasterDetailTabs','MasterDetailPanels') THEN SELECT code_para INTO v_code_para FROM zen_Wizard_template WHERE code_id = 'MasterDetail'; END IF; SET v_bh = ''; SET v_bf = ''; -- 取得 block_name SELECT blockcname INTO v_blockname FROM zen_blockname WHERE menuid = p_FunctionTag AND blockno = p_FieldBlock; IF IFNULL(v_blockname, '') = '' THEN SET v_blockname = '區塊標題'; END IF; -- MD Log 允許根據 code_para 決定是 Tabs or Panel(待測試) IF LOCATE('Tab', p_code_id) > 0 OR LOCATE('Tab', IFNULL(v_code_para, '')) > 0 THEN SET v_bTab = 1; SET v_Tab1 = '//'; ELSE SET v_bTab = 0; SET v_Tab1 = ''; END IF; IF p_block = 'BH' OR p_block = 'BA' THEN IF (p_FieldBlock = 0 AND v_bTab = 1) OR (v_bTab = 0) THEN SET v_Tab1 = ''; ELSE SET v_Tab1 = '//'; END IF; SET v_bh = CONCAT( ' {', v_crlf, ' "', v_Tab1, 'type": "fieldSet",', v_crlf, ' "title": "', v_blockname, '",', v_crlf, ' "collapsable": true,', v_crlf, ' "body": [', v_crlf ); IF p_FieldBlock = 1 AND v_bTab = 1 THEN SET v_bh = CONCAT( ' {', v_crlf, ' "type": "tabs",', v_crlf, ' "mode": "line",', v_crlf, ' "tabs": [', v_crlf, ' {', v_crlf, ' "title": "', v_blockname, '",', v_crlf, ' "body": [', v_crlf ); END IF; END IF; IF p_block = 'BF' OR p_block = 'BA' THEN SET v_bf = CONCAT( ' ]', v_crlf, ' }', v_crlf ); IF p_FieldBlock = v_imax_block AND v_bTab = 1 THEN SET v_bf = CONCAT( ' ]', v_crlf, ' }', v_crlf, ' ]', v_crlf, ' }', v_crlf ); END IF; END IF; -- 加入簡易排版功能, type=group SET v_gh = ''; SET v_gf = ''; IF p_group = 'GH' THEN SET v_gh = CONCAT( '{', v_crlf, ' "type": "group",', v_crlf, ' "body": [', v_crlf ); END IF; IF p_group = 'GF' THEN SET v_gf = CONCAT( ' ]', v_crlf, ' }' ); END IF; -- 取得並暫存 block / group 的內容 UPDATE zen_wizard_jsondata SET json_bh = v_bh, json_bf = v_bf, json_gh = v_gh, json_gf = v_gf WHERE uuid = p_uuid AND rowid = p_rowid; END // DELIMITER ;