feat: comprehensive cross-file support and performance optimization (v3.3.0)

- Implemented cross-file completion, references, and validation for .frml files.
- Optimized resource discovery using IntelliJ indexing (ReferencesSearch) to fix IDE freeze.
- Refactored shared search logic into DynFormPathUtils.
- Excluded <ROW> tags from field definition requirements.
- Updated plugin version to 3.3.0.
This commit is contained in:
2026-05-14 18:27:57 +07:00
parent b6dc46d775
commit 431e51079c
35 changed files with 4693 additions and 565 deletions

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8"?>
<FORMS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="dynf/dynf-form-def.xsd">
<DATASETS>
<DATASET ID="DS-APPROVE-FILES">
<SCHEMA>APP</SCHEMA>
<TABLENAME>ATTACH_FILES</TABLENAME>
<KEYFIELDS>ATFI_SEQ</KEYFIELDS>
<SQL>
<SELECT>SELECT ATFI_SEQ
, PROJ_ID
, ACM_CODE
, ATFI_TYPE
, ATFI_FILE
, ATFI_MIME
, ATFI_DESC
</SELECT>
<FROM>FROM ATTACH_FILES</FROM>
<ORDER>ORDER BY PROJ_ID,ATFI_SEQ,ACM_CODE</ORDER>
</SQL>
<FIELDS>
<FIELD NAME="ATFI_SEQ" TYPE="AUTO" LABEL="ลำดับไฟล์แนบ" WIDTH="15"/>
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="รหัสโครงการ" WIDTH="50"/>
<FIELD NAME="ACM_CODE" TYPE="TEXT" LABEL="รหัสกิจกรรม" WIDTH="25"/>
<FIELD NAME="ATFI_TYPE" TYPE="TEXT" LABEL="ประเภทไฟล์แนบ" WIDTH="25"/>
<FIELD NAME="ATFI_FILE" TYPE="TEXT" LABEL="ชื่อไฟล์แนบ" WIDTH="250"/>
<FIELD NAME="ATFI_MIME" TYPE="TEXT" LABEL="ชนิดของไฟล์แนบ (MIME Type)" WIDTH="100"/>
<FIELD NAME="ATFI_DESC" TYPE="TEXT" LABEL="คำอธิบาย/รายละเอียดไฟล์แนบ" WIDTH="250"/>
</FIELDS>
<MASTER-DATA DATASET-ID="DS-MASTER" MASTER-FIELDS="PROJ_ID,ACM_CODE,APPROVE_TYPE" DETAIL-FIELDS="PROJ_ID,ACM_CODE,ATFI_TYPE"/>
</DATASET>
<DATASET ID="DS-ACM-COMMENT">
<SCHEMA>APP</SCHEMA>
<TABLENAME>PROPOSALS_COMMENTS</TABLENAME>
<KEYFIELDS>PPSC_SEQ</KEYFIELDS>
<SQL>
<SELECT>SELECT PROP_ID
, PROP_VERSION
, PROJ_ID
, ACM_CODE
, BGM_CODE
, PPSC_LEVEL
, PPSC_SEQ
, PPSC_COMMENT
, PPSC_COMMENT_BY
, PPSC_COMMENT_TIME
</SELECT>
<FROM>FROM PROPOSALS_COMMENTS</FROM>
</SQL>
<FIELDS>
<FIELD NAME="PROP_ID" TYPE="TEXT" LABEL="รหัสคำขอ" WIDTH="50"/>
<FIELD NAME="PROP_VERSION" TYPE="NUMBER" LABEL="เวอร์ชั่นคำขอ" WIDTH="10"/>
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="รหัสโครงการ" WIDTH="50"/>
<FIELD NAME="ACM_CODE" TYPE="TEXT" LABEL="รหัสกิจกรรม" WIDTH="50"/>
<FIELD NAME="BGM_CODE" TYPE="TEXT" LABEL="รหัสรายการงบประมาณ" WIDTH="50"/>
<FIELD NAME="PPSC_LEVEL" TYPE="TEXT" LABEL="ระดับของความเห็น (PROJECT, GROUP, ITEM)" WIDTH="10" DEFAULT="GROUP"/>
<FIELD NAME="PPSC_SEQ" TYPE="NUMBER" LABEL="ลำดับความเห็น" WIDTH="10"/>
<FIELD NAME="PPSC_COMMENT" TYPE="TEXT" LABEL="เนื้อหาความเห็น" WIDTH="2000"/>
<FIELD NAME="PPSC_COMMENT_BY" TYPE="TEXT" LABEL="ผู้ให้ความเห็น" WIDTH="50" DEFAULT="${$UserCode}"/>
<FIELD NAME="PPSC_COMMENT_TIME" TYPE="DATE" LABEL="เวลาที่ให้ความเห็น" WIDTH="19"/>
</FIELDS>
<MASTER-DATA DATASET-ID="DS-MASTER" MASTER-FIELDS="PROP_ID,PROJ_ID,ACM_CODE,PROP_VERSION" DETAIL-FIELDS="PROP_ID,PROJ_ID,ACM_CODE,PROP_VERSION"/>
</DATASET>
<DATASET ID="DS-ACM-HIST-COMMENT">
<SCHEMA>APP</SCHEMA>
<TABLENAME>PROPOSALS_COMMENTS</TABLENAME>
<KEYFIELDS>PROJ_ID,PROP_ID,PPSC_SEQ</KEYFIELDS>
<SQL>
<SELECT>SELECT PROP_ID
, PROP_VERSION
, PROJ_ID
, ACM_CODE
, BGM_CODE
, PPSC_LEVEL
, PPSC_SEQ
, PPSC_COMMENT
, PPSC_COMMENT_BY
, PPSC_COMMENT_TIME
</SELECT>
<FROM>FROM PROPOSALS_COMMENTS</FROM>
<FILTER><![CDATA[WHERE PROP_VERSION <= :PROP_VERSION]]></FILTER>
<ORDER>ORDER BY PROJ_ID,PROP_ID,PPSC_SEQ</ORDER>
</SQL>
<FIELDS>
<FIELD NAME="PROP_ID" TYPE="TEXT" LABEL="รหัสคำขอ" WIDTH="50"/>
<FIELD NAME="PROP_VERSION" TYPE="NUMBER" LABEL="เวอร์ชั่นคำขอ" WIDTH="10"/>
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="รหัสโครงการ" WIDTH="50"/>
<FIELD NAME="ACM_CODE" TYPE="TEXT" LABEL="รหัสกิจกรรม" WIDTH="50"/>
<FIELD NAME="BGM_CODE" TYPE="TEXT" LABEL="รหัสรายการงบประมาณ" WIDTH="50"/>
<FIELD NAME="PPSC_LEVEL" TYPE="TEXT" LABEL="ระดับของความเห็น (PROJECT, GROUP, ITEM)" WIDTH="10"/>
<FIELD NAME="PPSC_SEQ" TYPE="NUMBER" LABEL="ลำดับความเห็น" WIDTH="10"/>
<FIELD NAME="PPSC_COMMENT" TYPE="TEXT" LABEL="เนื้อหาความเห็น" WIDTH="4000"/>
<FIELD NAME="PPSC_COMMENT_BY" TYPE="TEXT" LABEL="ผู้ให้ความเห็น" WIDTH="50"/>
<FIELD NAME="PPSC_COMMENT_TIME" TYPE="DATE" LABEL="เวลาที่ให้ความเห็น" WIDTH="19"/>
</FIELDS>
<MASTER-DATA DATASET-ID="DS-MASTER" MASTER-FIELDS="PROP_ID,PROJ_ID,ACM_CODE" DETAIL-FIELDS="PROP_ID,PROJ_ID,ACM_CODE"/>
</DATASET>
</DATASETS>
<FORM>
<FORM_ENTRY>
<FIELDS>
<SECTION ID="SECT-APPROVE-DATA">
<FIELD NAME="APPROVE_FILES" CAPTION="file.upload" INPUTTYPE="FILE-LIST-BOX">
<FILE-LIST-BOX DATASET="DS-APPROVE-FILES" FILE-TYPE="ATFI_TYPE" FILE-PATH="ATFI_FILE" FILE-DESC="ATFI_DESC" FILE-MIME="ATFI_MIME"/>
<FILE-BOX FILE-TYPE="budget-apvs" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
DEFAULT-NAME="@{stm_code}/@{proj_year}/@{-uuid-}"/>
</FIELD>
<FIELD NAME="PPSC_COMMENT" INPUTTYPE="TEXTAREA" CAPTION="revise.caption" ROWS="1"/>
<FIELD NAME="COMMENT-HISTORY" CAPTION="revise.history" INPUTTYPE="HISTORY-BOX">
<HISTORY-BOX DATASET="DS-ACM-HIST-COMMENT" DATE-FIELD="PPSC_COMMENT_TIME" USER-FIELD="PPSC_COMMENT_BY"
HIST-FIELD="PPSC_COMMENT"/>
</FIELD>
</SECTION>
</FIELDS>
</FORM_ENTRY>
</FORM>
</FORMS>