mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Making displayed size a bit more friendly
--HG-- branch : dev
This commit is contained in:
@@ -0,0 +1,63 @@
|
|||||||
|
using NUnit.Framework;
|
||||||
|
using Orchard.Media.Extensions;
|
||||||
|
|
||||||
|
namespace Orchard.Tests.Modules.Media.Extensions {
|
||||||
|
[TestFixture]
|
||||||
|
public class LongExtensionsTests {
|
||||||
|
[Test]
|
||||||
|
public void BytesAreFriendly() {
|
||||||
|
long size = 123;
|
||||||
|
string friendly = size.ToFriendlySizeString();
|
||||||
|
Assert.That(friendly, Is.EqualTo("123 B"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void KilobytesAreFriendly() {
|
||||||
|
long size = 93845;
|
||||||
|
string friendly = size.ToFriendlySizeString();
|
||||||
|
Assert.That(friendly, Is.EqualTo("92 KB"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MegabytesAreFriendly() {
|
||||||
|
long size = 6593528;
|
||||||
|
string friendly = size.ToFriendlySizeString();
|
||||||
|
Assert.That(friendly, Is.EqualTo("6.3 MB"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void GigabytesAreFriendly() {
|
||||||
|
long size = 46896534657;
|
||||||
|
string friendly = size.ToFriendlySizeString();
|
||||||
|
Assert.That(friendly, Is.EqualTo("43.68 GB"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TerabytesAreFriendly() {
|
||||||
|
long size = 386594723458690;
|
||||||
|
string friendly = size.ToFriendlySizeString();
|
||||||
|
Assert.That(friendly, Is.EqualTo("351.606 TB"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void PetabytesAreSlightlyFriendlyAsTerabytes() {
|
||||||
|
long size = 56794738495678965;
|
||||||
|
string friendly = size.ToFriendlySizeString();
|
||||||
|
Assert.That(friendly, Is.EqualTo("51654.514 TB"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void VeryLargeSizeDoesNotCauseFailure() {
|
||||||
|
long size = 5679473849567896593;
|
||||||
|
string friendly = size.ToFriendlySizeString();
|
||||||
|
Assert.That(friendly, Is.EqualTo("5165451.375 TB"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void NegativeSizeDoesNotCauseFailure(){
|
||||||
|
long size = -2598;
|
||||||
|
string friendly = size.ToFriendlySizeString();
|
||||||
|
Assert.That(friendly, Is.EqualTo("-2598 B"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -126,6 +126,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="CodeGeneration\Commands\CodeGenerationCommandsTests.cs" />
|
<Compile Include="CodeGeneration\Commands\CodeGenerationCommandsTests.cs" />
|
||||||
<Compile Include="DatabaseEnabledTestsBase.cs" />
|
<Compile Include="DatabaseEnabledTestsBase.cs" />
|
||||||
|
<Compile Include="Media\Extensions\LongExtensionsTests.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Roles\Controllers\AdminControllerTests.cs" />
|
<Compile Include="Roles\Controllers\AdminControllerTests.cs" />
|
||||||
<Compile Include="Roles\Services\RoleServiceTests.cs" />
|
<Compile Include="Roles\Services\RoleServiceTests.cs" />
|
||||||
@@ -155,6 +156,10 @@
|
|||||||
<Project>{C0C45321-B51D-4D8D-9B7B-AA4C2E0B2962}</Project>
|
<Project>{C0C45321-B51D-4D8D-9B7B-AA4C2E0B2962}</Project>
|
||||||
<Name>Orchard.CodeGeneration</Name>
|
<Name>Orchard.CodeGeneration</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\Orchard.Web\Modules\Orchard.Media\Orchard.Media.csproj">
|
||||||
|
<Project>{D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB}</Project>
|
||||||
|
<Name>Orchard.Media</Name>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\Orchard.Web\Modules\Orchard.Modules\Orchard.Modules.csproj">
|
<ProjectReference Include="..\Orchard.Web\Modules\Orchard.Modules\Orchard.Modules.csproj">
|
||||||
<Project>{17F86780-9A1F-4AA1-86F1-875EEC2730C7}</Project>
|
<Project>{17F86780-9A1F-4AA1-86F1-875EEC2730C7}</Project>
|
||||||
<Name>Orchard.Modules</Name>
|
<Name>Orchard.Modules</Name>
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Orchard.Media.Extensions {
|
||||||
|
public static class LongExtensions {
|
||||||
|
private static List<string> units = new List<string>(5) {"B", "KB", "MB", "GB", "TB"}; // Not going further. Anything beyond MB is probably overkill anyway.
|
||||||
|
|
||||||
|
public static string ToFriendlySizeString(this long bytes) {
|
||||||
|
var somethingMoreFriendly = TryForTheNextUnit(bytes, units[0]);
|
||||||
|
var roundingPlaces = units[0] == somethingMoreFriendly.Item2 ? 0 : units.IndexOf(somethingMoreFriendly.Item2) - 1;
|
||||||
|
return string.Format("{0} {1}", Math.Round(somethingMoreFriendly.Item1, roundingPlaces), somethingMoreFriendly.Item2);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Tuple<double, string> TryForTheNextUnit(double size, string unit) {
|
||||||
|
var indexOfUnit = units.IndexOf(unit);
|
||||||
|
|
||||||
|
if (size > 1024 && indexOfUnit < units.Count - 1) {
|
||||||
|
size = size/1024;
|
||||||
|
unit = units[indexOfUnit + 1];
|
||||||
|
return TryForTheNextUnit(size, unit);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Tuple<double, string>(size, unit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -71,6 +71,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="AdminMenu.cs" />
|
<Compile Include="AdminMenu.cs" />
|
||||||
<Compile Include="Controllers\AdminController.cs" />
|
<Compile Include="Controllers\AdminController.cs" />
|
||||||
|
<Compile Include="Extensions\LongExtensions.cs" />
|
||||||
<Compile Include="Handlers\MediaSettingsPartHandler.cs" />
|
<Compile Include="Handlers\MediaSettingsPartHandler.cs" />
|
||||||
<Compile Include="Migrations.cs" />
|
<Compile Include="Migrations.cs" />
|
||||||
<Compile Include="Models\MediaSettingsPart.cs" />
|
<Compile Include="Models\MediaSettingsPart.cs" />
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
@model Orchard.Media.ViewModels.MediaFolderEditViewModel
|
@model Orchard.Media.ViewModels.MediaFolderEditViewModel
|
||||||
|
@using Orchard.Media.Extensions;
|
||||||
@using Orchard.Media.Helpers;
|
@using Orchard.Media.Helpers;
|
||||||
@using Orchard.Media.Models;
|
@using Orchard.Media.Models;
|
||||||
@{ Style.Require("MediaAdmin"); }
|
@{ Style.Require("MediaAdmin"); }
|
||||||
@@ -70,7 +71,7 @@
|
|||||||
<td>@mediaFile.User</td>
|
<td>@mediaFile.User</td>
|
||||||
<td>@mediaFile.LastUpdated</td>
|
<td>@mediaFile.LastUpdated</td>
|
||||||
<td>@mediaFile.Type</td>
|
<td>@mediaFile.Type</td>
|
||||||
<td>@mediaFile.Size</td>
|
<td>@mediaFile.Size.ToFriendlySizeString()</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,7 +88,7 @@
|
|||||||
<td>@mediaFolder.User</td>
|
<td>@mediaFolder.User</td>
|
||||||
<td>@mediaFolder.LastUpdated</td>
|
<td>@mediaFolder.LastUpdated</td>
|
||||||
<td>@T("Folder")</td>
|
<td>@T("Folder")</td>
|
||||||
<td>@mediaFolder.Size</td>
|
<td>@mediaFolder.Size.ToFriendlySizeString()</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
@model Orchard.Media.ViewModels.MediaItemEditViewModel
|
@model Orchard.Media.ViewModels.MediaItemEditViewModel
|
||||||
|
@using Orchard.Media.Extensions;
|
||||||
@using Orchard.Media.Helpers;
|
@using Orchard.Media.Helpers;
|
||||||
@using Orchard.Media.Models;
|
@using Orchard.Media.Models;
|
||||||
@{ Style.Require("MediaAdmin"); }
|
@{ Style.Require("MediaAdmin"); }
|
||||||
@@ -26,7 +27,7 @@
|
|||||||
<div>
|
<div>
|
||||||
@* <label>@T("Dimensions: <span>500 x 375 pixels</span>")</label> *@
|
@* <label>@T("Dimensions: <span>500 x 375 pixels</span>")</label> *@
|
||||||
|
|
||||||
<label>@T("Size: <span>{0}</span>", Model.Size)</label>
|
<label>@T("Size: <span>{0}</span>", Model.Size.ToFriendlySizeString())</label>
|
||||||
|
|
||||||
<label>@T("Added on: <span>{0}</span>", Model.LastUpdated)</label>
|
<label>@T("Added on: <span>{0}</span>", Model.LastUpdated)</label>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
@model Orchard.Media.ViewModels.MediaFolderIndexViewModel
|
@model Orchard.Media.ViewModels.MediaFolderIndexViewModel
|
||||||
|
@using Orchard.Media.Extensions;
|
||||||
|
|
||||||
<h1>@Html.TitleForPage(T("Manage Media Folders").ToString())</h1>
|
<h1>@Html.TitleForPage(T("Manage Media Folders").ToString())</h1>
|
||||||
@Html.ValidationSummary()
|
@Html.ValidationSummary()
|
||||||
@@ -44,7 +45,7 @@
|
|||||||
<td>@mediaFolder.User</td>
|
<td>@mediaFolder.User</td>
|
||||||
<td>@mediaFolder.LastUpdated</td>
|
<td>@mediaFolder.LastUpdated</td>
|
||||||
<td>@T("Folder")</td>
|
<td>@T("Folder")</td>
|
||||||
<td>@mediaFolder.Size</td>
|
<td>@mediaFolder.Size.ToFriendlySizeString()</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
Reference in New Issue
Block a user