DELIMITER // CREATE OR REPLACE PROCEDURE zen_create_json_comps_others_view( IN p_uuid VARCHAR(100), IN p_FieldObject VARCHAR(100), IN p_tblName VARCHAR(100), IN p_FieldName VARCHAR(100), IN p_FieldCN NVARCHAR(100), IN p_fielddefault VARCHAR(100), IN p_FieldDS VARCHAR(2), IN p_FieldCheckNull VARCHAR(2), IN p_query_type VARCHAR(1), IN p_fieldfm VARCHAR(100), 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_blob_data TEXT; DECLARE v_view_blob TEXT; DECLARE v_comps TEXT; DECLARE v_field_df VARCHAR(800); DECLARE v_gridType VARCHAR(100); DECLARE v_crlf VARCHAR(2); DECLARE v_ip VARCHAR(100); DECLARE v_db VARCHAR(100); SET v_crlf = CONCAT(CHAR(13), CHAR(10)); SET v_ip = '${ls:base_ip}'; SET v_db = '${ls:base_db}'; -- for View Component SET v_view_blob = ''; SET v_gridType = 'static'; -- text(text 在 FromView 時, label 會不顯示) IF LOCATE('date', p_FieldObject) > 0 THEN SET v_gridType = 'static-date'; ELSEIF LOCATE('image', p_FieldObject) > 0 THEN SET v_gridType = 'image'; SET v_view_blob = CONCAT(' "enlargeAble": true,', v_crlf); ELSEIF p_FieldObject = 'input-file' THEN SET v_gridType = p_FieldObject; SET v_view_blob = CONCAT(' "disabled": true,', v_crlf); ELSEIF p_FieldObject = 'select' THEN SET v_gridType = 'select'; SET v_view_blob = 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, ' "disabled": true,', v_crlf ); ELSEIF p_FieldObject = 'options' THEN -- option 是特殊的 select, 但還是 select SET v_gridType = 'select'; SET v_view_blob = zen_get_keyvalue(p_tblName, p_FieldName); SET v_view_blob = CONCAT(' "disabled": true,', v_crlf, v_view_blob); ELSEIF p_FieldObject = 'radios' THEN -- option 是特殊的 select, 但還是 select SET v_gridType = p_FieldObject; SET v_view_blob = zen_get_keyvalue(p_tblName, p_FieldName); SET v_view_blob = CONCAT(' "disabled": true,', v_crlf, v_view_blob); ELSEIF p_FieldObject = 'mapping' THEN -- mapping 是特殊的 select, 但還是 select SET v_gridType = 'static-mapping'; SET v_view_blob = zen_get_mapping(p_tblName, p_FieldName); SET v_view_blob = CONCAT(' "disabled": true,', v_crlf, v_view_blob); ELSEIF p_FieldObject = 'switch' THEN SET v_gridType = 'switch'; SET v_view_blob = CONCAT( ' "trueValue": "Y",', v_crlf, ' "falseValue": "N",', v_crlf, ' "disabled": true,', v_crlf, v_view_blob ); ELSEIF p_FieldObject = 'checkbox' THEN SET v_gridType = 'checkbox'; SET v_view_blob = CONCAT( ' "trueValue": "Y",', v_crlf, ' "falseValue": "N",', v_crlf, ' "disabled": true,', v_crlf, v_view_blob ); ELSEIF p_FieldObject = 'textarea' THEN SET v_gridType = 'textarea'; SET v_view_blob = CONCAT(' "disabled": true,', v_crlf, v_view_blob); ELSEIF p_FieldObject = 'hidden' THEN SET v_gridType = 'hidden'; ELSEIF p_FieldObject = 'progress' THEN SET v_gridType = 'static-progress'; -- 如果是 uuid, View 時要改為 qr-code ELSEIF p_FieldObject = 'uuid' THEN -- 多加入 fieldfm 的判斷 20240309 Michael IF IFNULL(p_fieldfm, '') = '' THEN SET v_gridType = 'static'; SET v_view_blob = CONCAT(' "visible": false,', v_crlf, v_view_blob); ELSE SET v_gridType = p_fieldfm; END IF; ELSE -- 在 view page, 應該都要加 disable SET v_view_blob = CONCAT(' "disabled": true,', v_crlf, v_view_blob); END IF; -- 新增數字靠右的機制 SET v_field_df = ''; IF (p_FieldObject = 'input-number') THEN -- 讀取設定 IF IFNULL(p_fieldfm, '') = '' THEN SET p_fieldfm = 'd0'; END IF; SET p_fieldfm = CONCAT('"${ls:sys@', p_fieldfm, '}"'); SET v_field_df = CONCAT( ' "align": "right",', v_crlf, ' "precision": ', p_fieldfm, ',', v_crlf ); ELSEIF p_FieldObject = 'input-date' THEN SET v_field_df = CONCAT(' "format": "YYYY-MM-DD",', v_crlf); END IF; IF p_FieldObject = 'qr-code' THEN SET v_comps = CONCAT( ' {', v_crlf, ' "type": "', p_FieldObject, '",', v_crlf, ' "codeSize": 128,', v_crlf, ' "value": "${', p_FieldName, '}"', v_crlf, ' }' ); ELSE SET v_comps = CONCAT( ' {', v_crlf, ' "type": "', v_gridType, '",', v_crlf, ' "name": "', p_FieldName, '",', v_crlf, v_field_df, v_view_blob, ' "label": "', p_FieldCN, '"', v_crlf, ' }' ); END IF; UPDATE zen_wizard_jsondata SET json_view = v_comps WHERE uuid = p_uuid AND rowid = p_rowid; END // DELIMITER ;