first commit
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
DELIMITER //
|
||||
|
||||
CREATE OR REPLACE PROCEDURE zen_create_json_kernel(
|
||||
IN p_uuid VARCHAR(100),
|
||||
IN p_FunctionTag VARCHAR(100),
|
||||
IN p_tblName VARCHAR(100),
|
||||
IN p_pk VARCHAR(100),
|
||||
IN p_query_type VARCHAR(1),
|
||||
IN p_code_id VARCHAR(100)
|
||||
)
|
||||
/*
|
||||
功能 : amis Wizard 產生 json UI 的核心程式
|
||||
描述: 本段 sp 是設定的主程式, 由此呼叫各自元件 sp, 會重新組合出原 @temp_code 內跟 compoment 的定義內容
|
||||
一般記錄到 zen_wizard_jsondata, 少數情況會寫到 zen_wizard_tmp(zen_create_json_transfer)
|
||||
仔細看起來, 似乎只有 Cycle 類元件以及 picker, transfer 及 formula 這幾個特殊元件要特別獨立 function 處理
|
||||
我覺得還是給每個元件一段 sp, 雖然子程式會變多, 但是會更好維護 Thinking
|
||||
建立日期 : 2023/12/20
|
||||
|
||||
修改歷史
|
||||
項目 誰 日期 修改說明
|
||||
==== ========== ========== ================================================
|
||||
1 Michael 2023/12/20 根據 v1.0 重構
|
||||
*/
|
||||
BEGIN
|
||||
/* 目前支援下列 amis 元件(可依需求繼續擴充)
|
||||
select / options / options-add / checkboxes
|
||||
input-date / input-datetime / input-time
|
||||
input-number / input-password / formula
|
||||
picker
|
||||
radios
|
||||
switch
|
||||
checkbox
|
||||
static
|
||||
input-text
|
||||
textarea
|
||||
input-image
|
||||
input-file
|
||||
link-file
|
||||
link
|
||||
transfer
|
||||
mapping
|
||||
progress
|
||||
hidden
|
||||
uuid
|
||||
qr-code
|
||||
cycle-frequency / cycle-weeks / cycle-months / cycle-startdate / cycle-enddate
|
||||
*/
|
||||
|
||||
DECLARE v_FieldObject VARCHAR(100);
|
||||
DECLARE v_picker_tag VARCHAR(100);
|
||||
DECLARE v_FieldName VARCHAR(100);
|
||||
DECLARE v_FieldCN NVARCHAR(100);
|
||||
DECLARE v_FieldWidth VARCHAR(100);
|
||||
DECLARE v_fielddefault VARCHAR(200);
|
||||
DECLARE v_fieldro VARCHAR(10);
|
||||
DECLARE v_fieldfm VARCHAR(100);
|
||||
DECLARE v_FieldDS VARCHAR(1);
|
||||
DECLARE v_FieldSH VARCHAR(1);
|
||||
DECLARE v_FieldCheckNull VARCHAR(1);
|
||||
DECLARE v_iscolumnmatch VARCHAR(10);
|
||||
DECLARE v_FieldBlock INT;
|
||||
DECLARE v_group VARCHAR(10);
|
||||
DECLARE v_block VARCHAR(10);
|
||||
-- DECLARE v_y SMALLINT;
|
||||
DECLARE v_cnt INT;
|
||||
DECLARE v_imax INT;
|
||||
DECLARE v_imin INT;
|
||||
DECLARE v_inow INT;
|
||||
|
||||
DECLARE v_required VARCHAR(100);
|
||||
DECLARE v_others VARCHAR(800);
|
||||
-- 有非 input-text 標準屬性設定的其他元件, 但又不是 4大特殊元件的元件(picker, cycle-, formula, transfer)
|
||||
SET v_others = 'input-file^input-image^textarea^select^input-date^input-datetime^options^options-add^mapping^progress^link-file^link^radios^';
|
||||
|
||||
SELECT MIN(rowid) INTO v_imin FROM zen_wizard_jsondata WHERE uuid = p_uuid;
|
||||
SELECT MAX(rowid) INTO v_imax FROM zen_wizard_jsondata WHERE uuid = p_uuid;
|
||||
SET v_inow = v_imin;
|
||||
-- SET v_y = 1;
|
||||
|
||||
WHILE v_inow <= v_imax DO
|
||||
SELECT
|
||||
fieldname, IFNULL(fieldcn,fieldname), fieldwidth, fieldobject, fieldblock, picker_tag,
|
||||
IFNULL(fielddefault,''), IFNULL(fieldro,'N'), IFNULL(fieldfm,''),
|
||||
fieldds, fieldsh, fieldchecknull, iscolumnmatch, _group, _block
|
||||
INTO
|
||||
v_FieldName, v_FieldCN, v_FieldWidth, v_FieldObject, v_FieldBlock, v_picker_tag,
|
||||
v_fielddefault, v_fieldro, v_fieldfm,
|
||||
v_FieldDS, v_FieldSH, v_FieldCheckNull, v_iscolumnmatch, v_group, v_block
|
||||
FROM zen_wizard_jsondata WHERE uuid = p_uuid AND rowid = v_inow;
|
||||
|
||||
-- 防錯處理
|
||||
IF v_FieldObject = 'Picker' AND IFNULL(v_picker_tag,'') = '' THEN
|
||||
SET v_FieldObject = 'input-text';
|
||||
END IF;
|
||||
|
||||
-- 是否為必填
|
||||
SET v_required = '';
|
||||
IF v_FieldCheckNull = 'A' OR v_FieldCheckNull = 'Y' THEN
|
||||
SET v_required = ' "required": true,';
|
||||
END IF;
|
||||
|
||||
-- 加入簡易排版功能, type=block
|
||||
-- v2: block / group
|
||||
CALL zen_create_json_comps_block(p_uuid,p_FunctionTag,p_code_id,v_group,v_FieldBlock,v_block,v_inow);
|
||||
|
||||
-- by 元件產生設定內容, 並寫入暫存
|
||||
IF v_FieldObject = 'formula' THEN
|
||||
CALL zen_create_json_comps_formula(p_uuid,v_FieldObject,v_FieldName,v_FieldCN,v_picker_tag,v_inow);
|
||||
ELSEIF v_FieldObject = 'picker' THEN
|
||||
CALL zen_create_json_comps_picker(p_uuid,p_FunctionTag,v_FieldName,v_FieldCN,v_picker_tag,p_pk,v_FieldCheckNull,v_inow);
|
||||
ELSEIF v_FieldObject = 'transfer' THEN
|
||||
CALL zen_create_json_comps_transfer(p_uuid,v_FieldName,v_FieldCN,v_picker_tag,p_code_id,v_inow);
|
||||
ELSEIF LOCATE('cycle-',v_FieldObject) > 0 THEN
|
||||
CALL zen_create_json_comps_cycles(p_uuid,v_FieldObject,v_FieldName,v_FieldCN,v_inow);
|
||||
ELSEIF v_FieldSH = 'Y' THEN
|
||||
CALL zen_create_json_comps_others(
|
||||
p_uuid,p_FunctionTag,p_code_id,v_FieldObject,p_tblName,p_pk,
|
||||
v_FieldName,v_FieldCN,v_fieldro,v_fielddefault,v_FieldDS,v_FieldSH,
|
||||
v_FieldCheckNull,v_required,p_query_type,v_picker_tag,v_fieldfm,v_inow
|
||||
);
|
||||
END IF;
|
||||
|
||||
SET v_inow = v_inow + 1;
|
||||
END WHILE;
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user