Merge pull request #1699 from sbwalker/dev
UX improvements to FileManager and Pager components
This commit is contained in:
commit
a762f206a1
|
@ -10,54 +10,63 @@
|
|||
<div id="@Id" class="container-fluid px-0">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
@if (ShowFolders || FolderId <= 0)
|
||||
{
|
||||
<div>
|
||||
<select class="form-select" value="@FolderId" @onchange="(e => FolderChanged(e))">
|
||||
@if (string.IsNullOrEmpty(Folder))
|
||||
<div class="container-fluid px-0">
|
||||
@if (ShowFolders || FolderId <= 0)
|
||||
{
|
||||
<div class="row"><div class="col">
|
||||
<select class="form-select" value="@FolderId" @onchange="(e => FolderChanged(e))">
|
||||
@if (string.IsNullOrEmpty(Folder))
|
||||
{
|
||||
<option value="-1"><@Localizer["Folder.Select"]></option>
|
||||
}
|
||||
@foreach (Folder folder in _folders)
|
||||
{
|
||||
<option value="@(folder.FolderId)">@(new string('-', folder.Level * 2))@(folder.Name)</option>
|
||||
}
|
||||
</select>
|
||||
</div></div>
|
||||
}
|
||||
@if (ShowFiles)
|
||||
{
|
||||
<div class="row"><div class="col mt-1">
|
||||
<select class="form-select" value="@FileId" @onchange="(e => FileChanged(e))">
|
||||
<option value="-1"><@Localizer["File.Select"]></option>
|
||||
@foreach (File file in _files)
|
||||
{
|
||||
<option value="@(file.FileId)">@(file.Name)</option>
|
||||
}
|
||||
</select>
|
||||
</div></div>
|
||||
}
|
||||
@if (ShowUpload && _haseditpermission)
|
||||
{
|
||||
<div class="row"><div class="col mt-1">
|
||||
@if (UploadMultiple)
|
||||
{
|
||||
<option value="-1"><@Localizer["Folder.Select"]></option>
|
||||
<input type="file" id="@_fileinputid" name="file" accept="@_filter" multiple />
|
||||
}
|
||||
@foreach (Folder folder in _folders)
|
||||
else
|
||||
{
|
||||
<option value="@(folder.FolderId)">@(new string('-', folder.Level * 2))@(folder.Name)</option>
|
||||
<input type="file" id="@_fileinputid" name="file" accept="@_filter" />
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
}
|
||||
@if (ShowFiles)
|
||||
{
|
||||
<div>
|
||||
<select class="form-select" value="@FileId" @onchange="(e => FileChanged(e))">
|
||||
<option value="-1"><@Localizer["File.Select"]></option>
|
||||
@foreach (File file in _files)
|
||||
{
|
||||
<option value="@(file.FileId)">@(file.Name)</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
}
|
||||
@if (ShowUpload && _haseditpermission)
|
||||
{
|
||||
<div>
|
||||
@if (UploadMultiple)
|
||||
{
|
||||
<input type="file" id="@_fileinputid" name="file" accept="@_filter" multiple />
|
||||
}
|
||||
else
|
||||
{
|
||||
<input type="file" id="@_fileinputid" name="file" accept="@_filter" />
|
||||
}
|
||||
<span id="@_progressinfoid"></span><progress id="@_progressbarid" style="width: 150px; visibility: hidden;"></progress>
|
||||
<span class="float-end">
|
||||
<button type="button" class="btn btn-success" @onclick="UploadFile">@SharedLocalizer["Upload"]</button>
|
||||
@if (ShowFiles && GetFileId() != -1)
|
||||
{
|
||||
<button type="button" class="btn btn-danger" @onclick="DeleteFile">@SharedLocalizer["Delete"]</button>
|
||||
}
|
||||
</span>
|
||||
</div>
|
||||
}
|
||||
<span class="float-end">
|
||||
<button type="button" class="btn btn-success" @onclick="UploadFile">@SharedLocalizer["Upload"]</button>
|
||||
@if (ShowFiles && GetFileId() != -1)
|
||||
{
|
||||
<button type="button" class="btn btn-danger" @onclick="DeleteFile">@SharedLocalizer["Delete"]</button>
|
||||
}
|
||||
</span>
|
||||
</div></div>
|
||||
<div class="row"><div class="col mt-1">
|
||||
<div class="container-fluid px-0">
|
||||
<div class="row">
|
||||
<div class="col-6"><span id="@_progressinfoid"></span></div>
|
||||
<div class="col-6"><progress id="@_progressbarid" class="mt-1" style="visibility: hidden;"></progress></div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@if (_image != string.Empty)
|
||||
{
|
||||
|
@ -69,7 +78,7 @@
|
|||
@if (!string.IsNullOrEmpty(_message))
|
||||
{
|
||||
<div class="row">
|
||||
<div class="col mt-2">
|
||||
<div class="col mt-1">
|
||||
<ModuleMessage Message="@_message" Type="@_messagetype" />
|
||||
</div>
|
||||
</div>
|
||||
|
@ -234,7 +243,6 @@
|
|||
catch (Exception ex)
|
||||
{
|
||||
await logger.LogError(ex, "Error Loading Files {Error}", ex.Message);
|
||||
|
||||
_message = Localizer["Error.File.Load"];
|
||||
_messagetype = MessageType.Error;
|
||||
}
|
||||
|
@ -299,9 +307,6 @@
|
|||
{
|
||||
await logger.LogInformation("File Upload Succeeded {Files}", upload);
|
||||
|
||||
_message = Localizer["Success.File.Upload"];
|
||||
_messagetype = MessageType.Success;
|
||||
|
||||
// set FileId to first file in upload collection
|
||||
await GetFiles();
|
||||
var file = _files.Where(item => item.Name == upload[0]).FirstOrDefault();
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<li class="page-item@((_page > 1) ? "" : " disabled")">
|
||||
<a class="page-link" @onclick=@(async () => UpdateList(1))><span class="oi oi-media-step-backward" title="start" aria-hidden="true"></span></a>
|
||||
</li>
|
||||
@if (_pages > _displayPages)
|
||||
@if (_pages > _displayPages && _displayPages > 1)
|
||||
{
|
||||
<li class="page-item@((_page > _displayPages) ? "" : " disabled")">
|
||||
<a class="page-link" @onclick=@(async () => SkipPages("back"))><span class="oi oi-media-skip-backward" title="skip back" aria-hidden="true"></span></a>
|
||||
|
@ -38,7 +38,7 @@
|
|||
<li class="page-item@((_page < _pages) ? "" : " disabled")">
|
||||
<a class="page-link" @onclick=@(async () => NavigateToPage("next"))><span class="oi oi-chevron-right" title="next" aria-hidden="true"></span></a>
|
||||
</li>
|
||||
@if (_pages > _displayPages)
|
||||
@if (_pages > _displayPages && _displayPages > 1)
|
||||
{
|
||||
<li class="page-item@((_endPage < _pages) ? "" : " disabled")">
|
||||
<a class="page-link" @onclick=@(async () => SkipPages("forward"))><span class="oi oi-media-skip-forward" title="skip forward" aria-hidden="true"></span></a>
|
||||
|
@ -48,7 +48,7 @@
|
|||
<a class="page-link" @onclick=@(async () => UpdateList(_pages))><span class="oi oi-media-step-forward" title="end" aria-hidden="true"></span></a>
|
||||
</li>
|
||||
<li class="page-item disabled">
|
||||
<a class="page-link">Page @_page of @_pages</a>
|
||||
<a class="page-link" style="white-space: nowrap;">Page @_page of @_pages</a>
|
||||
</li>
|
||||
</ul>
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
@ -126,9 +126,6 @@
|
|||
<data name="Error.File.Load" xml:space="preserve">
|
||||
<value>Error Loading Files</value>
|
||||
</data>
|
||||
<data name="Success.File.Upload" xml:space="preserve">
|
||||
<value>File Upload Succeeded</value>
|
||||
</data>
|
||||
<data name="Error.File.Upload" xml:space="preserve">
|
||||
<value>File Upload Failed</value>
|
||||
</data>
|
||||
|
|
|
@ -301,7 +301,6 @@ Oqtane.Interop = {
|
|||
var files = document.getElementById(id + 'FileInput').files;
|
||||
var progressinfo = document.getElementById(id + 'ProgressInfo');
|
||||
var progressbar = document.getElementById(id + 'ProgressBar');
|
||||
var filename = '';
|
||||
|
||||
for (var i = 0; i < files.length; i++) {
|
||||
var FileChunk = [];
|
||||
|
@ -312,11 +311,7 @@ Oqtane.Interop = {
|
|||
var EndPos = BufferChunkSize;
|
||||
var Size = file.size;
|
||||
|
||||
progressbar.setAttribute("style", "visibility: visible;");
|
||||
|
||||
if (files.length > 1) {
|
||||
filename = file.name;
|
||||
}
|
||||
progressbar.setAttribute("style", "width:100%; visibility: visible;");
|
||||
|
||||
while (FileStreamPos < Size) {
|
||||
FileChunk.push(file.slice(FileStreamPos, EndPos));
|
||||
|
@ -338,16 +333,16 @@ Oqtane.Interop = {
|
|||
request.open('POST', posturl, true);
|
||||
request.upload.onloadstart = function (e) {
|
||||
progressbar.value = 0;
|
||||
progressinfo.innerHTML = filename + ' 0%';
|
||||
progressinfo.innerHTML = file.name + ' 0%';
|
||||
};
|
||||
request.upload.onprogress = function (e) {
|
||||
var percent = Math.ceil((e.loaded / e.total) * 100);
|
||||
progressbar.value = (percent / 100);
|
||||
progressinfo.innerHTML = filename + '[' + PartCount + '] ' + percent + '%';
|
||||
progressinfo.innerHTML = file.name + '[' + PartCount + '] ' + percent + '%';
|
||||
};
|
||||
request.upload.onloadend = function (e) {
|
||||
progressbar.value = 1;
|
||||
progressinfo.innerHTML = filename + ' 100%';
|
||||
progressinfo.innerHTML = file.name + ' 100%';
|
||||
};
|
||||
request.send(data);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user