Skip to content

Commit 24869bb

Browse files
author
p01
committed
Fix for DFL-3570, Allow to show the same Resource in the tree of several Documents.
1 parent 881b4ca commit 24869bb

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

src/resource-manager/resource_service.js

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ cls.ResourceManagerService = function(view, network_logger)
1616
this._documentList = [];
1717
this._documentURLHash = {};
1818
this._collapsedHash = {};
19+
this._documentResources = {};
1920

2021
this._handle_listDocuments = function(status,msg)
2122
{
@@ -46,9 +47,13 @@ cls.ResourceManagerService = function(view, network_logger)
4647
window.services['document-manager'].requestListDocuments(this._tag_requestListDocuments, []);
4748
};
4849

49-
this._getNetworkContext = function()
50+
this._populateDocumentResources = function(r)
5051
{
51-
return this._network_logger.get_window_contexts();
52+
var documentID = r.document_id;
53+
if (!this._documentResources[documentID])
54+
this._documentResources[documentID]=[];
55+
if (!this._documentResources[documentID].contains(r.id))
56+
this._documentResources[documentID].push(r.id);
5257
}
5358

5459
this._update = function(msg)
@@ -95,11 +100,18 @@ cls.ResourceManagerService = function(view, network_logger)
95100
// assign top resource to the right document
96101
// add group to each resource
97102
// sameOrigin flag to each resource
98-
ctx.resourceList.forEach(function(r, i)
103+
ctx.resourceList
104+
.forEach(function(r)
99105
{
106+
this._populateDocumentResources(r);
107+
108+
// check if this is the top resource of a document
100109
var documentID = ctx.documentResourceHash[r.id];
101-
if (documentID!=null && documentID!=r.document_id)
110+
if (documentID != null && documentID != r.document_id)
111+
{
102112
r.document_id = documentID;
113+
this._populateDocumentResources(r);
114+
}
103115

104116
r.group = typeGroupMapping[r.type]||typeGroupMapping['*'];
105117
r.sameOrigin = cls.ResourceUtil.sameOrigin(this._documentURLHash[r.document_id], r);
@@ -136,6 +148,7 @@ cls.ResourceManagerService = function(view, network_logger)
136148
this._listDocuments();
137149

138150
ctx.selectedResourceID = this._selectedResourceID;
151+
ctx.documentResources = this._documentResources;
139152
ctx.collapsed = this._collapsedHash;
140153
this._context = ctx;
141154
}
@@ -153,6 +166,7 @@ cls.ResourceManagerService = function(view, network_logger)
153166
{
154167
this._documentList = [];
155168
this._collapsedHash = {};
169+
this._documentResources = {};
156170

157171
delete this._context;
158172
delete this._selectedResourceID

src/resource-manager/resource_templates.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -102,27 +102,26 @@ templates.resource_tree =
102102
{
103103
var documents = context.documentList.
104104
filter(function(d){
105-
return d.documentID!=null && d.windowID==wid && d.parentDocumentID==pid;
105+
return d.documentID != null && d.windowID == wid && d.parentDocumentID == pid;
106106
});
107107

108108
if (documents.length)
109109
return (
110110
['ul',
111111
documents.map(this.document.bind(this, context)).
112112
filter(function(v){
113-
return v!=null;
113+
return v != null;
114114
}),
115115
'class','resource-tree-documents'
116116
]);
117117
},
118118

119119
document:function(context, d)
120120
{
121-
// var documentMainResource = context.documents.map(function(d){return d.resourceID;});
122-
121+
var documentResources = context.documentResources[d.documentID]||[];
123122
var resources = context.resourceList.
124123
filter(function(r){
125-
return r.document_id==d.documentID //|| d.resourceID==r.resource_id;
124+
return documentResources.contains(r.id);
126125
});
127126

128127
if (resources.length)
@@ -133,7 +132,7 @@ templates.resource_tree =
133132
['li',
134133
['h2',
135134
['span',
136-
(d.url.filename||d.url.short_distinguisher),
135+
(d.url.filename || d.url.short_distinguisher),
137136
'class','resource-tree-document-label'
138137
],
139138
' ',
@@ -172,7 +171,7 @@ templates.resource_tree =
172171
{
173172
var resources = resources_unfiltered.
174173
filter(function(r){
175-
return r.group==g;
174+
return r.group == g;
176175
});
177176

178177
if (resources.length)
@@ -214,7 +213,7 @@ templates.resource_tree =
214213
['h2',
215214
['span',
216215
(r.filename || r.short_distinguisher || r.url || 'NO URL'),
217-
'class','resource-tree-resource-label'
216+
'class','resource-tree-resource-label'
218217
],
219218
'handler','resource-detail',
220219
'data-resource-id',''+r.id,

0 commit comments

Comments
 (0)