Skip to content

Commit b85ba06

Browse files
committed
In FileSelectDialog, allow to filter by label
1 parent e83473c commit b85ba06

File tree

4 files changed

+19
-14
lines changed

4 files changed

+19
-14
lines changed

client/browser/FileSelectDialog.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ const FilesList = memo((props: any) => {
6868

6969
export default function FileSelectDialog(props) {
7070
const {realm, baseUrl, csrfToken, selectFile} = props;
71-
const [structure, setStructure] = useState({root_folder: null, last_folder: null, files: null});
71+
const [structure, setStructure] = useState({root_folder: null, last_folder: null, files: null, labels: []});
7272
const [uploadedFile, setUploadedFile] = useState(null);
7373
const ref = useRef(null);
7474
const uploaderRef = useRef(null);
@@ -109,7 +109,12 @@ export default function FileSelectDialog(props) {
109109
}
110110
return `${baseUrl}${folderId}/list`;
111111
})();
112-
const newStructure = {root_folder: structure.root_folder, last_folder: folderId, files: null};
112+
const newStructure = {
113+
root_folder: structure.root_folder,
114+
last_folder: folderId,
115+
files: null,
116+
labels: structure.labels,
117+
};
113118
const response = await fetch(fetchUrl);
114119
if (response.ok) {
115120
const body = await response.json();
@@ -135,12 +140,13 @@ export default function FileSelectDialog(props) {
135140
<BrowserEditor
136141
uploadedFile={uploadedFile}
137142
mainContent={ref.current}
138-
settings={{csrfToken, baseUrl, selectFile, labels: uploadedFile.labels}}
143+
settings={{csrfToken, baseUrl, selectFile, labels: structure.labels}}
139144
/> : <>
140145
<MenuBar
141146
lastFolderId={structure.last_folder}
142147
fetchFiles={fetchFiles}
143148
openUploader={() => uploaderRef.current.openUploader()}
149+
labels={structure.labels}
144150
/>
145151
<div className="browser-body">
146152
<nav className="folder-structure">

client/browser/MenuBar.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import UploadIcon from '../icons/upload.svg';
77

88

99
export default function MenuBar(props) {
10-
const {lastFolderId, fetchFiles, openUploader} = props;
10+
const {lastFolderId, fetchFiles, openUploader, labels} = props;
1111
const searchRef = useRef(null);
1212
const [searchRealm, setSearchRealm] = useSearchRealm('current');
1313

@@ -74,8 +74,8 @@ export default function MenuBar(props) {
7474
</DropDownMenu>
7575
</div>
7676
</li>
77-
// TODO: <FilterByLabel />
78-
<SortingOptionsItem refreshColumns={() => fetchFiles(lastFolderId)}/>
77+
<SortingOptionsItem refreshFilesList={() => fetchFiles(lastFolderId)}/>
78+
{labels && <FilterByLabel refreshFilesList={() => fetchFiles(lastFolderId)} labels={labels} />}
7979
<li role="menuitem" onClick={openUploader} data-tooltip-id="django-finder-tooltip"
8080
data-tooltip-content={gettext("Upload file")}>
8181
<UploadIcon/>

client/finder/MenuBar.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ const useFilter = () => useCookie('django-finder-filter', []);
3636

3737

3838
export function SortingOptionsItem(props: any) {
39-
const {refreshColumns} = props;
39+
const {refreshFilesList} = props;
4040
const [sorting, setSorting] = useSorting();
4141

4242
function changeSorting(value) {
4343
if (value !== sorting) {
4444
setSorting(value);
45-
refreshColumns();
45+
refreshFilesList();
4646
}
4747
}
4848

@@ -450,7 +450,7 @@ const MenuBar = forwardRef((props: any, forwardedRef) => {
450450
role="menuitem" data-tooltip-id="django-finder-tooltip" data-tooltip-content={gettext("Columns view")}>
451451
<ColumnsIcon/>
452452
</li>
453-
<SortingOptionsItem refreshColumns={refreshColumns} />
453+
<SortingOptionsItem refreshFilesList={refreshColumns} />
454454
{settings.labels && <FilterByLabel refreshFilesList={refreshColumns} labels={settings.labels} />}
455455
<li aria-disabled={numSelectedInodes === 0} onClick={cutInodes}
456456
role="menuitem" data-tooltip-id="django-finder-tooltip"

finder/api/views.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ def structure(self, request, realm):
7777
'children': children,
7878
'has_subfolders': is_open,
7979
},
80+
'labels': [
81+
{'value': id, 'label': name, 'color': color}
82+
for id, name, color in Label.objects.values_list('id', 'name', 'color')
83+
],
8084
'last_folder': request.session['finder.last_folder'],
8185
**self.list(request, request.session['finder.last_folder']),
8286
}
@@ -179,11 +183,6 @@ def upload(self, request, folder_id):
179183
'file_info': file.as_dict,
180184
'form_html': mark_safe(strip_spaces_between_tags(form.as_div())),
181185
}
182-
if Label.objects.exists():
183-
response['labels'] = [
184-
{'value': id, 'label': name, 'color': color}
185-
for id, name, color in Label.objects.values_list('id', 'name', 'color')
186-
]
187186
return response
188187

189188
def change(self, request, file_id):

0 commit comments

Comments
 (0)