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,50 @@
<%@ page import="org.apache.commons.codec.*" %>
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<%@ include file="/WEB-INF/app/system/dynf/dynfSysInfo.jsp" %>
<!-- =========================================================================================== -->
<h1 class="page-header"><%=pageItemInfo.getProgTitle()%></h1>
<%
String _formId = "bdgt-0501010/general";
try {
String data = factory.rqsCtx.getParameter("data","");
boolean detailMode = false;
if (!data.isBlank()) {
data = JUtils.decBase64(data);
data = URLDecoder.decode(data, CharEncoding.UTF_8);
JSONObject jsData = new JSONObject(data);
String type = jsData.getString("type").toLowerCase();
String acmCode = jsData.getString("acm_code");
String projId = jsData.getString("proj_id");
if (type.equals("rutn")) {
_formId = "bdgt-0501010/routine";
} else if (type.equals("mngt")) {
_formId = "bdgt-0501010/manage";
} else if (type.equals("eqpt")) {
_formId = "bdgt-0501010/equipt";
} else if (type.equals("cnst")) {
_formId = "bdgt-0501010/construct";
}
detailMode = true;
dynForm = new DynForm(application, request, response, "bdgt05", _formId);
dynForm.setFormOwner(request.getRequestURL().toString());
dynForm.setFormvar("ACM_CODE",acmCode);
dynForm.setFormvar("PROJ_ID",projId);
} else {
dynForm = new DynForm(application, request, response, "bdgt05", _formId);
}
if (detailMode) {
factory.pageCtx.addWidget(DynConstants.PageWidget.FileBox);
%><%@ include file="/WEB-INF/app/system/dynf/dynfDataEdit.jsp" %><%
} else {
%><%@ include file="/WEB-INF/app/system/dynf/dynfDataList.jsp" %><%
}
} catch (Exception ex) {
factory.setRestCode("ERROR");
factory.setRestMsg(ex.getMessage() + "\n" + JUtils.stackToString(ex,16));
logger.error(ex.getMessage(),ex);
}
%>