* [PATCH proxmox-backup v2 0/5] fix #6691: allow search by comment in datastore content
@ 2026-05-06 12:13 Erik Fastermann
2026-05-06 12:13 ` [PATCH proxmox-backup v2 1/5] " Erik Fastermann
` (4 more replies)
0 siblings, 5 replies; 12+ messages in thread
From: Erik Fastermann @ 2026-05-06 12:13 UTC (permalink / raw)
To: pbs-devel; +Cc: Erik Fastermann
Enable search by the comment field in the datastore content.
Also includes multiple small bug fixes:
- Display items again when searching by a non existing value and
clearing the search bar.
- Correctly disable the remove box and tooltip for namespaces.
- Correctly disable the browse box and tooltip for the root namespace.
Erik Fastermann (5):
fix #6691: allow search by comment in datastore content
ui: datastore: fix content search empty list
ui: datastore: update code formatting with biome
ui: datastore: disable remove action for namespaces
ui: datastore: disable browse action for root ns
www/datastore/Content.js | 42 ++++++++++++++++++++++++----------------
1 file changed, 25 insertions(+), 17 deletions(-)
--
2.47.3
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH proxmox-backup v2 1/5] fix #6691: allow search by comment in datastore content
2026-05-06 12:13 [PATCH proxmox-backup v2 0/5] fix #6691: allow search by comment in datastore content Erik Fastermann
@ 2026-05-06 12:13 ` Erik Fastermann
2026-05-06 14:08 ` Shan Shaji
2026-05-06 15:06 ` Dominik Csapak
2026-05-06 12:13 ` [PATCH proxmox-backup v2 2/5] ui: datastore: fix content search empty list Erik Fastermann
` (3 subsequent siblings)
4 siblings, 2 replies; 12+ messages in thread
From: Erik Fastermann @ 2026-05-06 12:13 UTC (permalink / raw)
To: pbs-devel; +Cc: Erik Fastermann
Use case-insensitive matching, also for text and owner.
Signed-off-by: Erik Fastermann <e.fastermann@proxmox.com>
---
changes since v1:
* use case-insensitive matching for all fields, but with toLowerCase
www/datastore/Content.js | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/www/datastore/Content.js b/www/datastore/Content.js
index 1ec07505d..e963d62f9 100644
--- a/www/datastore/Content.js
+++ b/www/datastore/Content.js
@@ -933,15 +933,13 @@ Ext.define('PBS.DataStoreContent', {
},
filter: function (item, value) {
- if (item.data.text.indexOf(value) !== -1) {
- return true;
- }
-
- if (item.data.owner && item.data.owner.indexOf(value) !== -1) {
- return true;
- }
+ const needle = value.toLowerCase();
- return false;
+ return (
+ item.data.text.toLowerCase().includes(needle) ||
+ (item.data.owner && item.data.owner.toLowerCase().includes(needle)) ||
+ (item.data.comment && item.data.comment.toLowerCase().includes(needle))
+ );
},
search: function (tf, value) {
@@ -1486,7 +1484,7 @@ Ext.define('PBS.DataStoreContent', {
{
xtype: 'textfield',
reference: 'searchbox',
- emptyText: gettext('group, date or owner'),
+ emptyText: gettext('group, date, owner or comment'),
triggers: {
clear: {
cls: 'pmx-clear-trigger',
--
2.47.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH proxmox-backup v2 2/5] ui: datastore: fix content search empty list
2026-05-06 12:13 [PATCH proxmox-backup v2 0/5] fix #6691: allow search by comment in datastore content Erik Fastermann
2026-05-06 12:13 ` [PATCH proxmox-backup v2 1/5] " Erik Fastermann
@ 2026-05-06 12:13 ` Erik Fastermann
2026-05-06 15:10 ` Dominik Csapak
2026-05-06 12:13 ` [PATCH proxmox-backup v2 3/5] ui: datastore: update code formatting with biome Erik Fastermann
` (2 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: Erik Fastermann @ 2026-05-06 12:13 UTC (permalink / raw)
To: pbs-devel; +Cc: Erik Fastermann
Display items again when searching by a non existing value and
clearing the search bar.
Signed-off-by: Erik Fastermann <e.fastermann@proxmox.com>
---
www/datastore/Content.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/www/datastore/Content.js b/www/datastore/Content.js
index e963d62f9..54e93bd3c 100644
--- a/www/datastore/Content.js
+++ b/www/datastore/Content.js
@@ -961,7 +961,6 @@ Ext.define('PBS.DataStoreContent', {
// we do it a little bit later for the error mask to work
setTimeout(function () {
store.clearFilter();
- store.getRoot().collapseChildren(true);
store.beginUpdate();
store.getRoot().cascadeBy({
--
2.47.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH proxmox-backup v2 3/5] ui: datastore: update code formatting with biome
2026-05-06 12:13 [PATCH proxmox-backup v2 0/5] fix #6691: allow search by comment in datastore content Erik Fastermann
2026-05-06 12:13 ` [PATCH proxmox-backup v2 1/5] " Erik Fastermann
2026-05-06 12:13 ` [PATCH proxmox-backup v2 2/5] ui: datastore: fix content search empty list Erik Fastermann
@ 2026-05-06 12:13 ` Erik Fastermann
2026-05-06 15:11 ` Dominik Csapak
2026-05-06 12:13 ` [PATCH proxmox-backup v2 4/5] ui: datastore: disable remove action for namespaces Erik Fastermann
2026-05-06 12:13 ` [PATCH proxmox-backup v2 5/5] ui: datastore: disable browse action for root ns Erik Fastermann
4 siblings, 1 reply; 12+ messages in thread
From: Erik Fastermann @ 2026-05-06 12:13 UTC (permalink / raw)
To: pbs-devel; +Cc: Erik Fastermann
Signed-off-by: Erik Fastermann <e.fastermann@proxmox.com>
---
www/datastore/Content.js | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/www/datastore/Content.js b/www/datastore/Content.js
index 54e93bd3c..cb0159a51 100644
--- a/www/datastore/Content.js
+++ b/www/datastore/Content.js
@@ -1147,14 +1147,18 @@ Ext.define('PBS.DataStoreContent', {
return Ext.String.format(gettext("Move namespace '{0}'"), v);
},
getClass: (v, m, { data }) => {
- if (data.ty === 'group') { return 'fa fa-arrows'; }
+ if (data.ty === 'group') {
+ return 'fa fa-arrows';
+ }
if (data.ty === 'ns' && !data.isRootNS && data.ns === undefined) {
return 'fa fa-arrows';
}
return 'pmx-hidden';
},
isActionDisabled: (v, r, c, i, { data }) => {
- if (data.ty === 'group') { return false; }
+ if (data.ty === 'group') {
+ return false;
+ }
if (data.ty === 'ns' && !data.isRootNS && data.ns === undefined) {
return false;
}
--
2.47.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH proxmox-backup v2 4/5] ui: datastore: disable remove action for namespaces
2026-05-06 12:13 [PATCH proxmox-backup v2 0/5] fix #6691: allow search by comment in datastore content Erik Fastermann
` (2 preceding siblings ...)
2026-05-06 12:13 ` [PATCH proxmox-backup v2 3/5] ui: datastore: update code formatting with biome Erik Fastermann
@ 2026-05-06 12:13 ` Erik Fastermann
2026-05-06 15:13 ` Dominik Csapak
2026-05-06 12:13 ` [PATCH proxmox-backup v2 5/5] ui: datastore: disable browse action for root ns Erik Fastermann
4 siblings, 1 reply; 12+ messages in thread
From: Erik Fastermann @ 2026-05-06 12:13 UTC (permalink / raw)
To: pbs-devel; +Cc: Erik Fastermann
Disable the remove action and tooltip for namespaces.
Signed-off-by: Erik Fastermann <e.fastermann@proxmox.com>
---
changes since v1:
* cleaned up boolean logic
www/datastore/Content.js | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/www/datastore/Content.js b/www/datastore/Content.js
index cb0159a51..576e70a59 100644
--- a/www/datastore/Content.js
+++ b/www/datastore/Content.js
@@ -1211,7 +1211,13 @@ Ext.define('PBS.DataStoreContent', {
data.ty === 'dir'
? 'fa critical fa-trash-o'
: 'pmx-hidden',
- isActionDisabled: (v, r, c, i, { data }) => false,
+ isActionDisabled: (v, r, c, i, { data }) => {
+ const enabled =
+ (data.ty === 'ns' && !data.isRootNS && data.ns === undefined) ||
+ data.ty === 'group' ||
+ data.ty === 'dir';
+ return !enabled;
+ },
},
{
handler: 'downloadFile',
--
2.47.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH proxmox-backup v2 5/5] ui: datastore: disable browse action for root ns
2026-05-06 12:13 [PATCH proxmox-backup v2 0/5] fix #6691: allow search by comment in datastore content Erik Fastermann
` (3 preceding siblings ...)
2026-05-06 12:13 ` [PATCH proxmox-backup v2 4/5] ui: datastore: disable remove action for namespaces Erik Fastermann
@ 2026-05-06 12:13 ` Erik Fastermann
2026-05-06 15:13 ` Dominik Csapak
4 siblings, 1 reply; 12+ messages in thread
From: Erik Fastermann @ 2026-05-06 12:13 UTC (permalink / raw)
To: pbs-devel; +Cc: Erik Fastermann
Disable the browse action and tooltip for the root namespace.
Signed-off-by: Erik Fastermann <e.fastermann@proxmox.com>
---
changes since v1:
* cleaned up boolean logic
www/datastore/Content.js | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/www/datastore/Content.js b/www/datastore/Content.js
index 576e70a59..a2047148f 100644
--- a/www/datastore/Content.js
+++ b/www/datastore/Content.js
@@ -1241,13 +1241,14 @@ Ext.define('PBS.DataStoreContent', {
}
return 'pmx-hidden';
},
- isActionDisabled: (v, r, c, i, { data }) =>
- !(
+ isActionDisabled: (v, r, c, i, { data }) => {
+ const enableFile =
data.ty === 'file' &&
(data.filename.endsWith('.pxar.didx') ||
data.filename.endsWith('.mpxar.didx')) &&
- data['crypt-mode'] < 3
- ) && data.ty !== 'ns',
+ data['crypt-mode'] < 3;
+ return !enableFile && (data.ty !== 'ns' || data.root);
+ },
},
],
},
--
2.47.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH proxmox-backup v2 1/5] fix #6691: allow search by comment in datastore content
2026-05-06 12:13 ` [PATCH proxmox-backup v2 1/5] " Erik Fastermann
@ 2026-05-06 14:08 ` Shan Shaji
2026-05-06 15:06 ` Dominik Csapak
1 sibling, 0 replies; 12+ messages in thread
From: Shan Shaji @ 2026-05-06 14:08 UTC (permalink / raw)
To: Erik Fastermann, pbs-devel
Hi,
Applied and tested this change, I was able to search by comment. The
code changes also looks good.
Reviewed-by: Shan Shaji <s.shaji@proxmox.com>
Tested-by: Shan Shaji <s.shaji@proxmox.com>
On Wed May 6, 2026 at 2:13 PM CEST, Erik Fastermann wrote:
> Use case-insensitive matching, also for text and owner.
>
> Signed-off-by: Erik Fastermann <e.fastermann@proxmox.com>
> ---
>
> changes since v1:
> * use case-insensitive matching for all fields, but with toLowerCase
>
> www/datastore/Content.js | 16 +++++++---------
> 1 file changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/www/datastore/Content.js b/www/datastore/Content.js
> index 1ec07505d..e963d62f9 100644
> --- a/www/datastore/Content.js
> +++ b/www/datastore/Content.js
> @@ -933,15 +933,13 @@ Ext.define('PBS.DataStoreContent', {
> },
>
> filter: function (item, value) {
> - if (item.data.text.indexOf(value) !== -1) {
> - return true;
> - }
> -
> - if (item.data.owner && item.data.owner.indexOf(value) !== -1) {
> - return true;
> - }
> + const needle = value.toLowerCase();
>
> - return false;
> + return (
> + item.data.text.toLowerCase().includes(needle) ||
> + (item.data.owner && item.data.owner.toLowerCase().includes(needle)) ||
> + (item.data.comment && item.data.comment.toLowerCase().includes(needle))
> + );
> },
>
> search: function (tf, value) {
> @@ -1486,7 +1484,7 @@ Ext.define('PBS.DataStoreContent', {
> {
> xtype: 'textfield',
> reference: 'searchbox',
> - emptyText: gettext('group, date or owner'),
> + emptyText: gettext('group, date, owner or comment'),
> triggers: {
> clear: {
> cls: 'pmx-clear-trigger',
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH proxmox-backup v2 1/5] fix #6691: allow search by comment in datastore content
2026-05-06 12:13 ` [PATCH proxmox-backup v2 1/5] " Erik Fastermann
2026-05-06 14:08 ` Shan Shaji
@ 2026-05-06 15:06 ` Dominik Csapak
1 sibling, 0 replies; 12+ messages in thread
From: Dominik Csapak @ 2026-05-06 15:06 UTC (permalink / raw)
To: Erik Fastermann, pbs-devel
while the change looks good to me too,
i would like it more if the new functionality (search in comment)
and the change to the existing features (case insensitive search in
owner and text fields) would be two separate commits.
(order does not matter to me though)
On 5/6/26 2:11 PM, Erik Fastermann wrote:
> Use case-insensitive matching, also for text and owner.
>
> Signed-off-by: Erik Fastermann <e.fastermann@proxmox.com>
> ---
>
> changes since v1:
> * use case-insensitive matching for all fields, but with toLowerCase
>
> www/datastore/Content.js | 16 +++++++---------
> 1 file changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/www/datastore/Content.js b/www/datastore/Content.js
> index 1ec07505d..e963d62f9 100644
> --- a/www/datastore/Content.js
> +++ b/www/datastore/Content.js
> @@ -933,15 +933,13 @@ Ext.define('PBS.DataStoreContent', {
> },
>
> filter: function (item, value) {
> - if (item.data.text.indexOf(value) !== -1) {
> - return true;
> - }
> -
> - if (item.data.owner && item.data.owner.indexOf(value) !== -1) {
> - return true;
> - }
> + const needle = value.toLowerCase();
>
> - return false;
> + return (
> + item.data.text.toLowerCase().includes(needle) ||
> + (item.data.owner && item.data.owner.toLowerCase().includes(needle)) ||
> + (item.data.comment && item.data.comment.toLowerCase().includes(needle))
> + );
> },
>
> search: function (tf, value) {
> @@ -1486,7 +1484,7 @@ Ext.define('PBS.DataStoreContent', {
> {
> xtype: 'textfield',
> reference: 'searchbox',
> - emptyText: gettext('group, date or owner'),
> + emptyText: gettext('group, date, owner or comment'),
> triggers: {
> clear: {
> cls: 'pmx-clear-trigger',
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH proxmox-backup v2 2/5] ui: datastore: fix content search empty list
2026-05-06 12:13 ` [PATCH proxmox-backup v2 2/5] ui: datastore: fix content search empty list Erik Fastermann
@ 2026-05-06 15:10 ` Dominik Csapak
0 siblings, 0 replies; 12+ messages in thread
From: Dominik Csapak @ 2026-05-06 15:10 UTC (permalink / raw)
To: Erik Fastermann, pbs-devel
two things here:
in general it would be good that the commit message explains why
the code does something (done here) but also explain any
non-obvious relation to the code (i.e. how does the change
have this effect)
i say this because to me it's not super obvious how this change
can have this effect. I looked at the surrounding code a bit
and IMO this part should not even be called when one clears
the search (since we should return early in that case before
the setTimeout)
so i think the real fix is probably something else and the
fact that this change fixes it for you is probably just a
side effect...
On 5/6/26 2:11 PM, Erik Fastermann wrote:
> Display items again when searching by a non existing value and
> clearing the search bar.
>
> Signed-off-by: Erik Fastermann <e.fastermann@proxmox.com>
> ---
> www/datastore/Content.js | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/www/datastore/Content.js b/www/datastore/Content.js
> index e963d62f9..54e93bd3c 100644
> --- a/www/datastore/Content.js
> +++ b/www/datastore/Content.js
> @@ -961,7 +961,6 @@ Ext.define('PBS.DataStoreContent', {
> // we do it a little bit later for the error mask to work
> setTimeout(function () {
> store.clearFilter();
> - store.getRoot().collapseChildren(true);
>
> store.beginUpdate();
> store.getRoot().cascadeBy({
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH proxmox-backup v2 3/5] ui: datastore: update code formatting with biome
2026-05-06 12:13 ` [PATCH proxmox-backup v2 3/5] ui: datastore: update code formatting with biome Erik Fastermann
@ 2026-05-06 15:11 ` Dominik Csapak
0 siblings, 0 replies; 12+ messages in thread
From: Dominik Csapak @ 2026-05-06 15:11 UTC (permalink / raw)
To: Erik Fastermann, pbs-devel
LGTM, but it'd probably be better to order formatting
commits upfront, so they can already be applied,
independently of the actual code changes.
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
On 5/6/26 2:11 PM, Erik Fastermann wrote:
> Signed-off-by: Erik Fastermann <e.fastermann@proxmox.com>
> ---
> www/datastore/Content.js | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/www/datastore/Content.js b/www/datastore/Content.js
> index 54e93bd3c..cb0159a51 100644
> --- a/www/datastore/Content.js
> +++ b/www/datastore/Content.js
> @@ -1147,14 +1147,18 @@ Ext.define('PBS.DataStoreContent', {
> return Ext.String.format(gettext("Move namespace '{0}'"), v);
> },
> getClass: (v, m, { data }) => {
> - if (data.ty === 'group') { return 'fa fa-arrows'; }
> + if (data.ty === 'group') {
> + return 'fa fa-arrows';
> + }
> if (data.ty === 'ns' && !data.isRootNS && data.ns === undefined) {
> return 'fa fa-arrows';
> }
> return 'pmx-hidden';
> },
> isActionDisabled: (v, r, c, i, { data }) => {
> - if (data.ty === 'group') { return false; }
> + if (data.ty === 'group') {
> + return false;
> + }
> if (data.ty === 'ns' && !data.isRootNS && data.ns === undefined) {
> return false;
> }
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH proxmox-backup v2 4/5] ui: datastore: disable remove action for namespaces
2026-05-06 12:13 ` [PATCH proxmox-backup v2 4/5] ui: datastore: disable remove action for namespaces Erik Fastermann
@ 2026-05-06 15:13 ` Dominik Csapak
0 siblings, 0 replies; 12+ messages in thread
From: Dominik Csapak @ 2026-05-06 15:13 UTC (permalink / raw)
To: Erik Fastermann, pbs-devel
On 5/6/26 2:12 PM, Erik Fastermann wrote:
> Disable the remove action and tooltip for namespaces.
nit: a short 'why' would improve the commit message here
for example:
Since the namespace entry does not show a remove button,
also disable the action itself and hide the tooltip.
>
> Signed-off-by: Erik Fastermann <e.fastermann@proxmox.com>
> ---
>
> changes since v1:
> * cleaned up boolean logic
>
> www/datastore/Content.js | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/www/datastore/Content.js b/www/datastore/Content.js
> index cb0159a51..576e70a59 100644
> --- a/www/datastore/Content.js
> +++ b/www/datastore/Content.js
> @@ -1211,7 +1211,13 @@ Ext.define('PBS.DataStoreContent', {
> data.ty === 'dir'
> ? 'fa critical fa-trash-o'
> : 'pmx-hidden',
> - isActionDisabled: (v, r, c, i, { data }) => false,
> + isActionDisabled: (v, r, c, i, { data }) => {
> + const enabled =
> + (data.ty === 'ns' && !data.isRootNS && data.ns === undefined) ||
> + data.ty === 'group' ||
> + data.ty === 'dir';
> + return !enabled;
> + },
> },
> {
> handler: 'downloadFile',
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH proxmox-backup v2 5/5] ui: datastore: disable browse action for root ns
2026-05-06 12:13 ` [PATCH proxmox-backup v2 5/5] ui: datastore: disable browse action for root ns Erik Fastermann
@ 2026-05-06 15:13 ` Dominik Csapak
0 siblings, 0 replies; 12+ messages in thread
From: Dominik Csapak @ 2026-05-06 15:13 UTC (permalink / raw)
To: Erik Fastermann, pbs-devel
On 5/6/26 2:12 PM, Erik Fastermann wrote:
> Disable the browse action and tooltip for the root namespace.
same as the previous patch, please include a short 'why'
(the 'what' can most often be seen in the code anyway ;) )
>
> Signed-off-by: Erik Fastermann <e.fastermann@proxmox.com>
> ---
>
> changes since v1:
> * cleaned up boolean logic
>
> www/datastore/Content.js | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/www/datastore/Content.js b/www/datastore/Content.js
> index 576e70a59..a2047148f 100644
> --- a/www/datastore/Content.js
> +++ b/www/datastore/Content.js
> @@ -1241,13 +1241,14 @@ Ext.define('PBS.DataStoreContent', {
> }
> return 'pmx-hidden';
> },
> - isActionDisabled: (v, r, c, i, { data }) =>
> - !(
> + isActionDisabled: (v, r, c, i, { data }) => {
> + const enableFile =
> data.ty === 'file' &&
> (data.filename.endsWith('.pxar.didx') ||
> data.filename.endsWith('.mpxar.didx')) &&
> - data['crypt-mode'] < 3
> - ) && data.ty !== 'ns',
> + data['crypt-mode'] < 3;
> + return !enableFile && (data.ty !== 'ns' || data.root);
> + },
> },
> ],
> },
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2026-05-06 15:14 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-06 12:13 [PATCH proxmox-backup v2 0/5] fix #6691: allow search by comment in datastore content Erik Fastermann
2026-05-06 12:13 ` [PATCH proxmox-backup v2 1/5] " Erik Fastermann
2026-05-06 14:08 ` Shan Shaji
2026-05-06 15:06 ` Dominik Csapak
2026-05-06 12:13 ` [PATCH proxmox-backup v2 2/5] ui: datastore: fix content search empty list Erik Fastermann
2026-05-06 15:10 ` Dominik Csapak
2026-05-06 12:13 ` [PATCH proxmox-backup v2 3/5] ui: datastore: update code formatting with biome Erik Fastermann
2026-05-06 15:11 ` Dominik Csapak
2026-05-06 12:13 ` [PATCH proxmox-backup v2 4/5] ui: datastore: disable remove action for namespaces Erik Fastermann
2026-05-06 15:13 ` Dominik Csapak
2026-05-06 12:13 ` [PATCH proxmox-backup v2 5/5] ui: datastore: disable browse action for root ns Erik Fastermann
2026-05-06 15:13 ` Dominik Csapak
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.