diff --git a/.changes/unreleased/Docs-20260106-135315.yaml b/.changes/unreleased/Docs-20260106-135315.yaml
new file mode 100644
index 000000000..88c235fca
--- /dev/null
+++ b/.changes/unreleased/Docs-20260106-135315.yaml
@@ -0,0 +1,6 @@
+kind: Docs
+body: Add external table configuration details to source table_details
+time: 2026-01-06T13:53:15.813385-05:00
+custom:
+ Author: portalhacker
+ Issue: "572"
diff --git a/src/app/components/table_details/table_details.html b/src/app/components/table_details/table_details.html
index c6c9198ca..674f39709 100644
--- a/src/app/components/table_details/table_details.html
+++ b/src/app/components/table_details/table_details.html
@@ -39,6 +39,16 @@
Details
+
diff --git a/src/app/components/table_details/table_details.js b/src/app/components/table_details/table_details.js
index 58a4c8325..07fecdd2b 100644
--- a/src/app/components/table_details/table_details.js
+++ b/src/app/components/table_details/table_details.js
@@ -19,6 +19,7 @@ angular
scope.details = [];
scope.extended = [];
+ scope.external = [];
scope.exclude = scope.exclude || [];
scope.meta = null;
scope._show_expanded = false;
@@ -181,6 +182,50 @@ angular
return mapped;
}
+ function getExternalTablesInfo(external) {
+ if (!external || _.isEmpty(external)) {
+ return [];
+ }
+
+ var result = [];
+ _.each(external, function(value, key) {
+ if (value === null || value === undefined) {
+ return;
+ }
+
+ if (key === 'options' && typeof value === 'object') {
+ // Expand options into separate rows
+ _.each(value, function(optValue, optKey) {
+ if (optValue !== null && optValue !== undefined) {
+ result.push({
+ name: 'Option: ' + optKey,
+ value: String(optValue),
+ isUrl: false
+ });
+ }
+ });
+ } else if (typeof value === 'object') {
+ // For other objects, stringify them
+ var stringValue = JSON.stringify(value);
+ if (stringValue !== '{}' && stringValue !== '[]') {
+ result.push({
+ name: key,
+ value: stringValue,
+ isUrl: false
+ });
+ }
+ } else {
+ result.push({
+ name: key,
+ value: String(value),
+ isUrl: key === 'location' && typeof value === 'string' && value.match(/^https?:\/\//)
+ });
+ }
+ });
+
+ return result;
+ }
+
scope.$watch("model", function(nv, ov) {
var get_type = _.property(['metadata', 'type'])
var rel_type = get_type(nv);
@@ -190,6 +235,7 @@ angular
scope.details = getBaseStats(nv);
scope.extended = getExtendedStats(nv.stats);
+ scope.external = getExternalTablesInfo(nv.external);
if (scope.extras) {
var extrasToAdd = _.filter(scope.extras, function(extra) {