From a43d19bc0dec8ccf323adc3f1bd42c1c7db77af3 Mon Sep 17 00:00:00 2001 From: lum Date: Fri, 2 Jan 2026 14:21:01 -0800 Subject: [PATCH 1/3] Improve linked schema form validation --- query/src/org/labkey/query/view/linkedSchema.jsp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/query/src/org/labkey/query/view/linkedSchema.jsp b/query/src/org/labkey/query/view/linkedSchema.jsp index 004160886f0..92c68ae2ac7 100644 --- a/query/src/org/labkey/query/view/linkedSchema.jsp +++ b/query/src/org/labkey/query/view/linkedSchema.jsp @@ -140,7 +140,6 @@ name: 'userSchemaName', fieldLabel: 'Schema Name', allowBlank: false, - validateOnBlur: false, maxLength: 50, value: <%=q(def.getUserSchemaName())%>, helpPopup: <%=qh(bean.getHelpHTML("UserSchemaName"))%> @@ -150,6 +149,9 @@ name: 'dataSource', fieldLabel: 'Source Container', value: <%=q(def.getDataSource())%>, + typeAhead: true, + anyMatch: true, + forceSelection: true, <%--helpPopup: <%=qh(bean.getHelpHTML("DataSource"))%>--%> })); @@ -497,6 +499,7 @@ items: [{ text: <%=q(bean.isInsert() ? "Create" : "Update")%>, type: 'submit', + formBind : true, handler: function () { var sourceContainerValue = sourceContainerCombo.getValue(); if (!sourceContainerValue) @@ -544,7 +547,7 @@ }); } },{ - <% if (bean.isInsert()) { %> + <% if (!bean.isInsert()) { %> text: 'Delete', handler: function() { document.location = <%=q(bean.getDeleteURL())%>; } },{ From f8b6c7853b15df73f73f23bfc3b490a20b4c3a86 Mon Sep 17 00:00:00 2001 From: lum Date: Fri, 2 Jan 2026 15:43:54 -0800 Subject: [PATCH 2/3] clear warnings --- .../org/labkey/query/view/linkedSchema.jsp | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/query/src/org/labkey/query/view/linkedSchema.jsp b/query/src/org/labkey/query/view/linkedSchema.jsp index 92c68ae2ac7..cc1ff872863 100644 --- a/query/src/org/labkey/query/view/linkedSchema.jsp +++ b/query/src/org/labkey/query/view/linkedSchema.jsp @@ -40,8 +40,7 @@ BaseExternalSchemaBean bean = (BaseExternalSchemaBean)HttpView.currentModel(); AbstractExternalSchemaDef def = bean.getSchemaDef(); - Container targetContainer = getContainer(); - Container sourceContainer = targetContainer; + Container sourceContainer = getContainer(); boolean isExternal = true; if (def instanceof LinkedSchemaDef lsd) @@ -60,8 +59,6 @@ Ext4.onReady(function () { var schemaType = <%=q(isExternal ? SchemaType.external.name() : SchemaType.linked.name())%>; - var external = <%=isExternal%>; - Ext4.QuickTips.init(); Ext4.define('LABKEY.Query.SchemaTemplate', { @@ -115,14 +112,14 @@ if (this.getOverride()) { this.setOverride(false); this.boundField.setDisabled(true); - var fieldContainer = this.boundField.up('fieldcontainer'); + let fieldContainer = this.boundField.up('fieldcontainer'); if (fieldContainer) fieldContainer.setDisabled(true); } else { this.setOverride(true); this.boundField.setDisabled(false); - var fieldContainer = this.boundField.up('fieldcontainer'); + let fieldContainer = this.boundField.up('fieldcontainer'); if (fieldContainer) fieldContainer.setDisabled(false); } @@ -176,7 +173,6 @@ displayField: 'name', valueField: 'name', editable: true, - //autoLoad: <%=def.getDataSource() != null%>, disabled: <%=def.getDataSource() == null%>, value: <%=q(initialTemplateName)%>, listConfig : { @@ -331,8 +327,7 @@ var schemaTemplateName = schemaTemplateCombo.getValue(); var schemaTemplateRecord = schemaTemplateCombo.store.getById(schemaTemplateName); if (schemaTemplateRecord) { - var sourceSchemaName = schemaTemplateRecord.get('sourceSchemaName'); - return sourceSchemaName; + return schemaTemplateRecord.get('sourceSchemaName'); } } }); @@ -416,8 +411,7 @@ var schemaTemplateName = schemaTemplateCombo.getValue(); var schemaTemplateRecord = schemaTemplateCombo.store.getById(schemaTemplateName); if (schemaTemplateRecord) { - var tables = schemaTemplateRecord.get('tables'); - return tables; + return schemaTemplateRecord.get('tables'); } } }); @@ -452,8 +446,7 @@ var schemaTemplateName = schemaTemplateCombo.getValue(); var schemaTemplateRecord = schemaTemplateCombo.store.getById(schemaTemplateName); if (schemaTemplateRecord) { - var metaData = schemaTemplateRecord.get('metadata'); - return metaData; + return schemaTemplateRecord.get('metadata'); } } }); From 3ed4d3f87146c33e99d068f202030881915b206b Mon Sep 17 00:00:00 2001 From: Lum Date: Mon, 5 Jan 2026 15:02:14 -0800 Subject: [PATCH 3/3] Switch event listener to better handle combo changes. --- query/src/org/labkey/query/view/linkedSchema.jsp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/query/src/org/labkey/query/view/linkedSchema.jsp b/query/src/org/labkey/query/view/linkedSchema.jsp index cc1ff872863..e24f34e4389 100644 --- a/query/src/org/labkey/query/view/linkedSchema.jsp +++ b/query/src/org/labkey/query/view/linkedSchema.jsp @@ -6,6 +6,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * + * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software @@ -148,16 +149,14 @@ value: <%=q(def.getDataSource())%>, typeAhead: true, anyMatch: true, - forceSelection: true, - <%--helpPopup: <%=qh(bean.getHelpHTML("DataSource"))%>--%> + forceSelection: true })); - sourceContainerCombo.on('select', function (field, records) { - var record = records[0]; - if (record) { + sourceContainerCombo.on('change', function (field, newValue) { + if (newValue) { sourceSchemaField.setDisabled(false); metadataField.setDisabled(false); - schemaTemplateCombo.loadTemplateField(field.getValue()); + schemaTemplateCombo.loadTemplateField(newValue); } else { sourceSchemaField.setDisabled(true); metadataField.setDisabled(true); @@ -165,7 +164,6 @@ } }); - var schemaTemplateCombo = Ext4.create('Ext.form.field.ComboBox', { name: 'schemaTemplate', fieldLabel: 'Schema Template',