Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| efb3d2ad11 | |||
| 2c9dbe39d3 |
@@ -539,7 +539,11 @@
|
|||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
<data name="report.col.group" xml:space="preserve"><value>Groupe</value></data>
|
<data name="report.col.group" xml:space="preserve"><value>Groupe</value></data>
|
||||||
=======
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
<data name="report.col.group" xml:space="preserve"><value>Groupe</value></data>
|
||||||
|
=======
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
<data name="report.col.total_size_mb" xml:space="preserve"><value>Taille totale (Mo)</value></data>
|
<data name="report.col.total_size_mb" xml:space="preserve"><value>Taille totale (Mo)</value></data>
|
||||||
<data name="report.col.version_size_mb" xml:space="preserve"><value>Taille des versions (Mo)</value></data>
|
<data name="report.col.version_size_mb" xml:space="preserve"><value>Taille des versions (Mo)</value></data>
|
||||||
<data name="report.col.size_mb" xml:space="preserve"><value>Taille (Mo)</value></data>
|
<data name="report.col.size_mb" xml:space="preserve"><value>Taille (Mo)</value></data>
|
||||||
@@ -563,6 +567,9 @@
|
|||||||
<data name="report.section.storage_by_file_type" xml:space="preserve"><value>Stockage par type de fichier</value></data>
|
<data name="report.section.storage_by_file_type" xml:space="preserve"><value>Stockage par type de fichier</value></data>
|
||||||
<data name="report.section.library_details" xml:space="preserve"><value>Détails des bibliothèques</value></data>
|
<data name="report.section.library_details" xml:space="preserve"><value>Détails des bibliothèques</value></data>
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
<!-- Site picker dialog -->
|
<!-- Site picker dialog -->
|
||||||
<data name="sitepicker.title" xml:space="preserve"><value>Sélectionner les sites</value></data>
|
<data name="sitepicker.title" xml:space="preserve"><value>Sélectionner les sites</value></data>
|
||||||
<data name="sitepicker.filter" xml:space="preserve"><value>Filtre :</value></data>
|
<data name="sitepicker.filter" xml:space="preserve"><value>Filtre :</value></data>
|
||||||
@@ -654,6 +661,9 @@
|
|||||||
<data name="report.text.users_parens" xml:space="preserve"><value>utilisateur(s)</value></data>
|
<data name="report.text.users_parens" xml:space="preserve"><value>utilisateur(s)</value></data>
|
||||||
<data name="report.text.files_unit" xml:space="preserve"><value>fichiers</value></data>
|
<data name="report.text.files_unit" xml:space="preserve"><value>fichiers</value></data>
|
||||||
<data name="report.text.sites_unit" xml:space="preserve"><value>sites</value></data>
|
<data name="report.text.sites_unit" xml:space="preserve"><value>sites</value></data>
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
=======
|
=======
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -539,7 +539,11 @@
|
|||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
<data name="report.col.group" xml:space="preserve"><value>Group</value></data>
|
<data name="report.col.group" xml:space="preserve"><value>Group</value></data>
|
||||||
=======
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
<data name="report.col.group" xml:space="preserve"><value>Group</value></data>
|
||||||
|
=======
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
<data name="report.col.total_size_mb" xml:space="preserve"><value>Total Size (MB)</value></data>
|
<data name="report.col.total_size_mb" xml:space="preserve"><value>Total Size (MB)</value></data>
|
||||||
<data name="report.col.version_size_mb" xml:space="preserve"><value>Version Size (MB)</value></data>
|
<data name="report.col.version_size_mb" xml:space="preserve"><value>Version Size (MB)</value></data>
|
||||||
<data name="report.col.size_mb" xml:space="preserve"><value>Size (MB)</value></data>
|
<data name="report.col.size_mb" xml:space="preserve"><value>Size (MB)</value></data>
|
||||||
@@ -563,6 +567,9 @@
|
|||||||
<data name="report.section.storage_by_file_type" xml:space="preserve"><value>Storage by File Type</value></data>
|
<data name="report.section.storage_by_file_type" xml:space="preserve"><value>Storage by File Type</value></data>
|
||||||
<data name="report.section.library_details" xml:space="preserve"><value>Library Details</value></data>
|
<data name="report.section.library_details" xml:space="preserve"><value>Library Details</value></data>
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
<!-- Site picker dialog -->
|
<!-- Site picker dialog -->
|
||||||
<data name="sitepicker.title" xml:space="preserve"><value>Select Sites</value></data>
|
<data name="sitepicker.title" xml:space="preserve"><value>Select Sites</value></data>
|
||||||
<data name="sitepicker.filter" xml:space="preserve"><value>Filter:</value></data>
|
<data name="sitepicker.filter" xml:space="preserve"><value>Filter:</value></data>
|
||||||
@@ -654,6 +661,9 @@
|
|||||||
<data name="report.text.users_parens" xml:space="preserve"><value>user(s)</value></data>
|
<data name="report.text.users_parens" xml:space="preserve"><value>user(s)</value></data>
|
||||||
<data name="report.text.files_unit" xml:space="preserve"><value>files</value></data>
|
<data name="report.text.files_unit" xml:space="preserve"><value>files</value></data>
|
||||||
<data name="report.text.sites_unit" xml:space="preserve"><value>sites</value></data>
|
<data name="report.text.sites_unit" xml:space="preserve"><value>sites</value></data>
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
=======
|
=======
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -15,13 +15,20 @@ public class DuplicatesCsvExportService
|
|||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
/// <summary>Writes the CSV to <paramref name="filePath"/> with UTF-8 BOM (Excel-compatible).</summary>
|
/// <summary>Writes the CSV to <paramref name="filePath"/> with UTF-8 BOM (Excel-compatible).</summary>
|
||||||
=======
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
/// <summary>Writes the CSV to <paramref name="filePath"/> with UTF-8 BOM (Excel-compatible).</summary>
|
||||||
|
=======
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
public async Task WriteAsync(
|
public async Task WriteAsync(
|
||||||
IReadOnlyList<DuplicateGroup> groups,
|
IReadOnlyList<DuplicateGroup> groups,
|
||||||
string filePath,
|
string filePath,
|
||||||
CancellationToken ct)
|
CancellationToken ct)
|
||||||
{
|
{
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
var csv = BuildCsv(groups);
|
var csv = BuildCsv(groups);
|
||||||
await ExportFileWriter.WriteCsvAsync(filePath, csv, ct);
|
await ExportFileWriter.WriteCsvAsync(filePath, csv, ct);
|
||||||
}
|
}
|
||||||
@@ -63,8 +70,11 @@ public class DuplicatesCsvExportService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string BuildCsv(IReadOnlyList<DuplicateGroup> groups)
|
public string BuildCsv(IReadOnlyList<DuplicateGroup> groups)
|
||||||
{
|
{
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
=======
|
=======
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
var T = TranslationSource.Instance;
|
var T = TranslationSource.Instance;
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
|
|
||||||
@@ -78,6 +88,11 @@ public class DuplicatesCsvExportService
|
|||||||
sb.AppendLine(string.Join(",", new[]
|
sb.AppendLine(string.Join(",", new[]
|
||||||
{
|
{
|
||||||
Csv(T["report.col.number"]),
|
Csv(T["report.col.number"]),
|
||||||
|
<<<<<<< HEAD
|
||||||
|
Csv(T["report.col.group"]),
|
||||||
|
Csv(T["report.text.copies"]),
|
||||||
|
Csv(T["report.col.site"]),
|
||||||
|
=======
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
Csv(T["report.col.group"]),
|
Csv(T["report.col.group"]),
|
||||||
Csv(T["report.text.copies"]),
|
Csv(T["report.text.copies"]),
|
||||||
@@ -86,6 +101,7 @@ public class DuplicatesCsvExportService
|
|||||||
Csv("Group"),
|
Csv("Group"),
|
||||||
Csv(T["report.text.copies"]),
|
Csv(T["report.text.copies"]),
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
Csv(T["report.col.name"]),
|
Csv(T["report.col.name"]),
|
||||||
Csv(T["report.col.library"]),
|
Csv(T["report.col.library"]),
|
||||||
Csv(T["report.col.path"]),
|
Csv(T["report.col.path"]),
|
||||||
@@ -94,10 +110,13 @@ public class DuplicatesCsvExportService
|
|||||||
Csv(T["report.col.modified"]),
|
Csv(T["report.col.modified"]),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
=======
|
=======
|
||||||
// Rows
|
// Rows
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
foreach (var g in groups)
|
foreach (var g in groups)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
@@ -112,7 +131,11 @@ public class DuplicatesCsvExportService
|
|||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
Csv(item.SiteTitle),
|
Csv(item.SiteTitle),
|
||||||
=======
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
Csv(item.SiteTitle),
|
||||||
|
=======
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
Csv(item.Name),
|
Csv(item.Name),
|
||||||
Csv(item.Library),
|
Csv(item.Library),
|
||||||
Csv(item.Path),
|
Csv(item.Path),
|
||||||
@@ -124,10 +147,15 @@ public class DuplicatesCsvExportService
|
|||||||
}
|
}
|
||||||
|
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string Csv(string value) => CsvSanitizer.Escape(value);
|
private static string Csv(string value) => CsvSanitizer.Escape(value);
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
=======
|
=======
|
||||||
await File.WriteAllTextAsync(filePath, sb.ToString(),
|
await File.WriteAllTextAsync(filePath, sb.ToString(),
|
||||||
new UTF8Encoding(encoderShouldEmitUTF8Identifier: true), ct);
|
new UTF8Encoding(encoderShouldEmitUTF8Identifier: true), ct);
|
||||||
@@ -139,4 +167,5 @@ public class DuplicatesCsvExportService
|
|||||||
return $"\"{value.Replace("\"", "\"\"")}\"";
|
return $"\"{value.Replace("\"", "\"\"")}\"";
|
||||||
}
|
}
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,11 @@ using SharepointToolbox.Localization;
|
|||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
using static SharepointToolbox.Services.Export.PermissionHtmlFragments;
|
using static SharepointToolbox.Services.Export.PermissionHtmlFragments;
|
||||||
=======
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
using static SharepointToolbox.Services.Export.PermissionHtmlFragments;
|
||||||
|
=======
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
|
|
||||||
namespace SharepointToolbox.Services.Export;
|
namespace SharepointToolbox.Services.Export;
|
||||||
|
|
||||||
@@ -34,6 +38,9 @@ public class HtmlExportService
|
|||||||
{
|
{
|
||||||
var T = TranslationSource.Instance;
|
var T = TranslationSource.Instance;
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
var (totalEntries, uniquePermSets, distinctUsers) = ComputeStats(
|
var (totalEntries, uniquePermSets, distinctUsers) = ComputeStats(
|
||||||
entries.Count,
|
entries.Count,
|
||||||
entries.Select(e => e.PermissionLevels),
|
entries.Select(e => e.PermissionLevels),
|
||||||
@@ -47,6 +54,8 @@ public class HtmlExportService
|
|||||||
AppendStatsCards(sb, totalEntries, uniquePermSets, distinctUsers);
|
AppendStatsCards(sb, totalEntries, uniquePermSets, distinctUsers);
|
||||||
AppendFilterInput(sb);
|
AppendFilterInput(sb);
|
||||||
AppendTableOpen(sb);
|
AppendTableOpen(sb);
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
=======
|
=======
|
||||||
// Compute stats
|
// Compute stats
|
||||||
var totalEntries = entries.Count;
|
var totalEntries = entries.Count;
|
||||||
@@ -125,6 +134,7 @@ a:hover { text-decoration: underline; }
|
|||||||
sb.AppendLine("<div class=\"table-wrap\">");
|
sb.AppendLine("<div class=\"table-wrap\">");
|
||||||
sb.AppendLine("<table id=\"permTable\">");
|
sb.AppendLine("<table id=\"permTable\">");
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
sb.AppendLine("<thead><tr>");
|
sb.AppendLine("<thead><tr>");
|
||||||
sb.AppendLine($" <th>{T["report.col.object"]}</th><th>{T["report.col.title"]}</th><th>{T["report.col.url"]}</th><th>{T["report.badge.unique"]}</th><th>{T["report.col.users_groups"]}</th><th>{T["report.col.permission_level"]}</th><th>{T["report.col.granted_through"]}</th>");
|
sb.AppendLine($" <th>{T["report.col.object"]}</th><th>{T["report.col.title"]}</th><th>{T["report.col.url"]}</th><th>{T["report.badge.unique"]}</th><th>{T["report.col.users_groups"]}</th><th>{T["report.col.permission_level"]}</th><th>{T["report.col.granted_through"]}</th>");
|
||||||
sb.AppendLine("</tr></thead>");
|
sb.AppendLine("</tr></thead>");
|
||||||
@@ -137,6 +147,11 @@ a:hover { text-decoration: underline; }
|
|||||||
var uniqueCss = entry.HasUniquePermissions ? "badge unique" : "badge inherited";
|
var uniqueCss = entry.HasUniquePermissions ? "badge unique" : "badge inherited";
|
||||||
var uniqueLbl = entry.HasUniquePermissions ? T["report.badge.unique"] : T["report.badge.inherited"];
|
var uniqueLbl = entry.HasUniquePermissions ? T["report.badge.unique"] : T["report.badge.inherited"];
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
var (pills, subRows) = BuildUserPillsCell(
|
||||||
|
entry.UserLogins, entry.Users, entry.PrincipalType, groupMembers,
|
||||||
|
colSpan: 7, grpMemIdx: ref grpMemIdx);
|
||||||
|
=======
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
var (pills, subRows) = BuildUserPillsCell(
|
var (pills, subRows) = BuildUserPillsCell(
|
||||||
entry.UserLogins, entry.Users, entry.PrincipalType, groupMembers,
|
entry.UserLogins, entry.Users, entry.PrincipalType, groupMembers,
|
||||||
@@ -183,6 +198,7 @@ a:hover { text-decoration: underline; }
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
|
|
||||||
sb.AppendLine("<tr>");
|
sb.AppendLine("<tr>");
|
||||||
sb.AppendLine($" <td><span class=\"{typeCss}\">{HtmlEncode(entry.ObjectType)}</span></td>");
|
sb.AppendLine($" <td><span class=\"{typeCss}\">{HtmlEncode(entry.ObjectType)}</span></td>");
|
||||||
@@ -417,6 +433,8 @@ a:hover { text-decoration: underline; }
|
|||||||
_ => ("#F3F4F6", "#374151", "#E5E7EB")
|
_ => ("#F3F4F6", "#374151", "#E5E7EB")
|
||||||
};
|
};
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
=======
|
=======
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -644,4 +662,5 @@ a:hover { text-decoration: underline; }
|
|||||||
.Replace("'", "'");
|
.Replace("'", "'");
|
||||||
}
|
}
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -180,11 +180,15 @@ public class StorageHtmlExportService
|
|||||||
var totalFiles = fileTypeMetrics.Sum(m => m.FileCount);
|
var totalFiles = fileTypeMetrics.Sum(m => m.FileCount);
|
||||||
|
|
||||||
sb.AppendLine("<div class=\"chart-section\">");
|
sb.AppendLine("<div class=\"chart-section\">");
|
||||||
|
<<<<<<< HEAD
|
||||||
|
sb.AppendLine($"<h2>{T["report.section.storage_by_file_type"]} ({totalFiles:N0} {T["report.text.files_unit"]}, {FormatSize(totalSize)})</h2>");
|
||||||
|
=======
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
sb.AppendLine($"<h2>{T["report.section.storage_by_file_type"]} ({totalFiles:N0} {T["report.text.files_unit"]}, {FormatSize(totalSize)})</h2>");
|
sb.AppendLine($"<h2>{T["report.section.storage_by_file_type"]} ({totalFiles:N0} {T["report.text.files_unit"]}, {FormatSize(totalSize)})</h2>");
|
||||||
=======
|
=======
|
||||||
sb.AppendLine($"<h2>{T["report.section.storage_by_file_type"]} ({totalFiles:N0} files, {FormatSize(totalSize)})</h2>");
|
sb.AppendLine($"<h2>{T["report.section.storage_by_file_type"]} ({totalFiles:N0} files, {FormatSize(totalSize)})</h2>");
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
|
|
||||||
var colors = new[] { "#0078d4", "#2b88d8", "#106ebe", "#005a9e", "#004578",
|
var colors = new[] { "#0078d4", "#2b88d8", "#106ebe", "#005a9e", "#004578",
|
||||||
"#00bcf2", "#009e49", "#8cbd18", "#ffb900", "#d83b01" };
|
"#00bcf2", "#009e49", "#8cbd18", "#ffb900", "#d83b01" };
|
||||||
|
|||||||
@@ -214,11 +214,15 @@ public partial class DuplicatesViewModel : FeatureViewModelBase
|
|||||||
if (dialog.ShowDialog() != true) return;
|
if (dialog.ShowDialog() != true) return;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
<<<<<<< HEAD
|
||||||
|
await _csvExportService.WriteAsync(_lastGroups, dialog.FileName, CurrentSplit, CancellationToken.None);
|
||||||
|
=======
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
await _csvExportService.WriteAsync(_lastGroups, dialog.FileName, CurrentSplit, CancellationToken.None);
|
await _csvExportService.WriteAsync(_lastGroups, dialog.FileName, CurrentSplit, CancellationToken.None);
|
||||||
=======
|
=======
|
||||||
await _csvExportService.WriteAsync(_lastGroups, dialog.FileName, CancellationToken.None);
|
await _csvExportService.WriteAsync(_lastGroups, dialog.FileName, CancellationToken.None);
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
Process.Start(new ProcessStartInfo(dialog.FileName) { UseShellExecute = true });
|
Process.Start(new ProcessStartInfo(dialog.FileName) { UseShellExecute = true });
|
||||||
}
|
}
|
||||||
catch (Exception ex) { StatusMessage = $"Export failed: {ex.Message}"; _logger.LogError(ex, "CSV export failed."); }
|
catch (Exception ex) { StatusMessage = $"Export failed: {ex.Message}"; _logger.LogError(ex, "CSV export failed."); }
|
||||||
|
|||||||
@@ -176,10 +176,14 @@ public partial class StorageViewModel : FeatureViewModelBase
|
|||||||
ExportCsvCommand = new AsyncRelayCommand(ExportCsvAsync, CanExport);
|
ExportCsvCommand = new AsyncRelayCommand(ExportCsvAsync, CanExport);
|
||||||
ExportHtmlCommand = new AsyncRelayCommand(ExportHtmlAsync, CanExport);
|
ExportHtmlCommand = new AsyncRelayCommand(ExportHtmlAsync, CanExport);
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
ApplyChartThemeColors();
|
||||||
|
=======
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
ApplyChartThemeColors();
|
ApplyChartThemeColors();
|
||||||
=======
|
=======
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
if (_themeManager is not null)
|
if (_themeManager is not null)
|
||||||
_themeManager.ThemeChanged += (_, _) => UpdateChartSeries();
|
_themeManager.ThemeChanged += (_, _) => UpdateChartSeries();
|
||||||
}
|
}
|
||||||
@@ -402,6 +406,9 @@ public partial class StorageViewModel : FeatureViewModelBase
|
|||||||
private SKColor ChartFgColor => (_themeManager?.IsDarkActive ?? false) ? new SKColor(0xE7, 0xEA, 0xF1) : new SKColor(0x1F, 0x24, 0x30);
|
private SKColor ChartFgColor => (_themeManager?.IsDarkActive ?? false) ? new SKColor(0xE7, 0xEA, 0xF1) : new SKColor(0x1F, 0x24, 0x30);
|
||||||
private SKColor ChartSeparatorColor => (_themeManager?.IsDarkActive ?? false) ? new SKColor(0x32, 0x38, 0x49) : new SKColor(0xE3, 0xE6, 0xEC);
|
private SKColor ChartSeparatorColor => (_themeManager?.IsDarkActive ?? false) ? new SKColor(0x32, 0x38, 0x49) : new SKColor(0xE3, 0xE6, 0xEC);
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
private SKColor ChartSurfaceColor => (_themeManager?.IsDarkActive ?? false) ? new SKColor(0x1E, 0x22, 0x30) : new SKColor(0xFF, 0xFF, 0xFF);
|
private SKColor ChartSurfaceColor => (_themeManager?.IsDarkActive ?? false) ? new SKColor(0x1E, 0x22, 0x30) : new SKColor(0xFF, 0xFF, 0xFF);
|
||||||
|
|
||||||
private void ApplyChartThemeColors()
|
private void ApplyChartThemeColors()
|
||||||
@@ -411,8 +418,11 @@ public partial class StorageViewModel : FeatureViewModelBase
|
|||||||
TooltipTextPaint.Color = ChartFgColor;
|
TooltipTextPaint.Color = ChartFgColor;
|
||||||
TooltipBackgroundPaint.Color = ChartSurfaceColor;
|
TooltipBackgroundPaint.Color = ChartSurfaceColor;
|
||||||
}
|
}
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
=======
|
=======
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
|
|
||||||
private void UpdateChartSeries()
|
private void UpdateChartSeries()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,12 +16,17 @@
|
|||||||
<!-- Action bar: new folder (destination mode only) -->
|
<!-- Action bar: new folder (destination mode only) -->
|
||||||
<StackPanel x:Name="ActionBar" DockPanel.Dock="Top" Orientation="Horizontal"
|
<StackPanel x:Name="ActionBar" DockPanel.Dock="Top" Orientation="Horizontal"
|
||||||
Margin="0,0,0,6" Visibility="Collapsed">
|
Margin="0,0,0,6" Visibility="Collapsed">
|
||||||
|
<<<<<<< HEAD
|
||||||
|
<Button x:Name="NewFolderButton"
|
||||||
|
Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[common.new_folder]}"
|
||||||
|
=======
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
<Button x:Name="NewFolderButton"
|
<Button x:Name="NewFolderButton"
|
||||||
Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[common.new_folder]}"
|
Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[common.new_folder]}"
|
||||||
=======
|
=======
|
||||||
<Button x:Name="NewFolderButton" Content="+ New Folder"
|
<Button x:Name="NewFolderButton" Content="+ New Folder"
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
Padding="8,3" Click="NewFolder_Click" IsEnabled="False" />
|
Padding="8,3" Click="NewFolder_Click" IsEnabled="False" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,11 @@ public partial class FolderBrowserDialog : Window
|
|||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
private readonly List<TreeViewItem> _expandedNodes = new();
|
private readonly List<TreeViewItem> _expandedNodes = new();
|
||||||
=======
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
private readonly List<TreeViewItem> _expandedNodes = new();
|
||||||
|
=======
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Dialog for browsing library folders. Set <paramref name="allowFileSelection"/>
|
/// Dialog for browsing library folders. Set <paramref name="allowFileSelection"/>
|
||||||
@@ -87,7 +91,11 @@ public partial class FolderBrowserDialog : Window
|
|||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
_expandedNodes.Add(node);
|
_expandedNodes.Add(node);
|
||||||
=======
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
_expandedNodes.Add(node);
|
||||||
|
=======
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,6 +115,11 @@ public partial class FolderBrowserDialog : Window
|
|||||||
{
|
{
|
||||||
var folder = _ctx.Web.GetFolderByServerRelativeUrl(info.ServerRelativeUrl);
|
var folder = _ctx.Web.GetFolderByServerRelativeUrl(info.ServerRelativeUrl);
|
||||||
_ctx.Load(folder, f => f.StorageMetrics.TotalSize,
|
_ctx.Load(folder, f => f.StorageMetrics.TotalSize,
|
||||||
|
<<<<<<< HEAD
|
||||||
|
f => f.StorageMetrics.TotalFileCount);
|
||||||
|
var list = _ctx.Web.Lists.GetByTitle(info.LibraryTitle);
|
||||||
|
_ctx.Load(list, l => l.Title);
|
||||||
|
=======
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
f => f.StorageMetrics.TotalFileCount);
|
f => f.StorageMetrics.TotalFileCount);
|
||||||
var list = _ctx.Web.Lists.GetByTitle(info.LibraryTitle);
|
var list = _ctx.Web.Lists.GetByTitle(info.LibraryTitle);
|
||||||
@@ -119,6 +132,7 @@ public partial class FolderBrowserDialog : Window
|
|||||||
f => f.Files.Include(fi => fi.Name, fi => fi.Length,
|
f => f.Files.Include(fi => fi.Name, fi => fi.Length,
|
||||||
fi => fi.ServerRelativeUrl));
|
fi => fi.ServerRelativeUrl));
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
var progress = new Progress<Core.Models.OperationProgress>();
|
var progress = new Progress<Core.Models.OperationProgress>();
|
||||||
await ExecuteQueryRetryHelper.ExecuteQueryRetryAsync(_ctx, progress, CancellationToken.None);
|
await ExecuteQueryRetryHelper.ExecuteQueryRetryAsync(_ctx, progress, CancellationToken.None);
|
||||||
|
|
||||||
@@ -130,6 +144,9 @@ public partial class FolderBrowserDialog : Window
|
|||||||
folder.StorageMetrics.TotalSize);
|
folder.StorageMetrics.TotalSize);
|
||||||
|
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
// Enumerate direct children via paginated CAML — Folder.Folders /
|
// Enumerate direct children via paginated CAML — Folder.Folders /
|
||||||
// Folder.Files lazy loading hits the list-view threshold on libraries
|
// Folder.Files lazy loading hits the list-view threshold on libraries
|
||||||
// above 5,000 items even when only a small folder is being expanded.
|
// above 5,000 items even when only a small folder is being expanded.
|
||||||
@@ -207,6 +224,8 @@ public partial class FolderBrowserDialog : Window
|
|||||||
node.Items.Add(fileItem);
|
node.Items.Add(fileItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
=======
|
=======
|
||||||
// Child folders first
|
// Child folders first
|
||||||
foreach (var subFolder in folder.Folders)
|
foreach (var subFolder in folder.Folders)
|
||||||
@@ -254,6 +273,7 @@ public partial class FolderBrowserDialog : Window
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -369,6 +389,9 @@ public partial class FolderBrowserDialog : Window
|
|||||||
}
|
}
|
||||||
|
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
protected override void OnClosed(EventArgs e)
|
protected override void OnClosed(EventArgs e)
|
||||||
{
|
{
|
||||||
Loaded -= OnLoaded;
|
Loaded -= OnLoaded;
|
||||||
@@ -384,8 +407,11 @@ public partial class FolderBrowserDialog : Window
|
|||||||
base.OnClosed(e);
|
base.OnClosed(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
=======
|
=======
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
private record FolderNodeInfo(string LibraryTitle, string RelativePath, string ServerRelativeUrl);
|
private record FolderNodeInfo(string LibraryTitle, string RelativePath, string ServerRelativeUrl);
|
||||||
private record FileNodeInfo(string LibraryTitle, string RelativePath);
|
private record FileNodeInfo(string LibraryTitle, string RelativePath);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,17 @@
|
|||||||
<Window x:Class="SharepointToolbox.Views.Dialogs.InputDialog"
|
<Window x:Class="SharepointToolbox.Views.Dialogs.InputDialog"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
<<<<<<< HEAD
|
||||||
|
xmlns:loc="clr-namespace:SharepointToolbox.Localization"
|
||||||
|
Title="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[input.title]}"
|
||||||
|
=======
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
xmlns:loc="clr-namespace:SharepointToolbox.Localization"
|
xmlns:loc="clr-namespace:SharepointToolbox.Localization"
|
||||||
Title="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[input.title]}"
|
Title="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[input.title]}"
|
||||||
=======
|
=======
|
||||||
Title="Input"
|
Title="Input"
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
Width="340" Height="140"
|
Width="340" Height="140"
|
||||||
WindowStartupLocation="CenterOwner"
|
WindowStartupLocation="CenterOwner"
|
||||||
Background="{DynamicResource AppBgBrush}"
|
Background="{DynamicResource AppBgBrush}"
|
||||||
@@ -16,12 +21,17 @@
|
|||||||
<DockPanel Margin="12">
|
<DockPanel Margin="12">
|
||||||
<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal"
|
<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal"
|
||||||
HorizontalAlignment="Right" Margin="0,10,0,0">
|
HorizontalAlignment="Right" Margin="0,10,0,0">
|
||||||
|
<<<<<<< HEAD
|
||||||
|
<Button Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[btn.cancel]}"
|
||||||
|
Width="70" IsCancel="True" Margin="0,0,8,0"
|
||||||
|
=======
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
<Button Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[btn.cancel]}"
|
<Button Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[btn.cancel]}"
|
||||||
Width="70" IsCancel="True" Margin="0,0,8,0"
|
Width="70" IsCancel="True" Margin="0,0,8,0"
|
||||||
=======
|
=======
|
||||||
<Button Content="Cancel" Width="70" IsCancel="True" Margin="0,0,8,0"
|
<Button Content="Cancel" Width="70" IsCancel="True" Margin="0,0,8,0"
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
Click="Cancel_Click" />
|
Click="Cancel_Click" />
|
||||||
<Button Content="OK" Width="70" IsDefault="True"
|
<Button Content="OK" Width="70" IsDefault="True"
|
||||||
Click="Ok_Click" />
|
Click="Ok_Click" />
|
||||||
|
|||||||
@@ -60,12 +60,17 @@
|
|||||||
<!-- Site list with checkboxes -->
|
<!-- Site list with checkboxes -->
|
||||||
<ListView x:Name="SiteList" Grid.Row="2" Margin="0,0,0,8"
|
<ListView x:Name="SiteList" Grid.Row="2" Margin="0,0,0,8"
|
||||||
SelectionMode="Single"
|
SelectionMode="Single"
|
||||||
|
<<<<<<< HEAD
|
||||||
|
BorderThickness="1" BorderBrush="{DynamicResource BorderSoftBrush}"
|
||||||
|
GridViewColumnHeader.Click="SiteList_ColumnHeaderClick">
|
||||||
|
=======
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
BorderThickness="1" BorderBrush="{DynamicResource BorderSoftBrush}"
|
BorderThickness="1" BorderBrush="{DynamicResource BorderSoftBrush}"
|
||||||
GridViewColumnHeader.Click="SiteList_ColumnHeaderClick">
|
GridViewColumnHeader.Click="SiteList_ColumnHeaderClick">
|
||||||
=======
|
=======
|
||||||
BorderThickness="1" BorderBrush="{DynamicResource BorderSoftBrush}">
|
BorderThickness="1" BorderBrush="{DynamicResource BorderSoftBrush}">
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
<ListView.View>
|
<ListView.View>
|
||||||
<GridView>
|
<GridView>
|
||||||
<GridViewColumn Width="32">
|
<GridViewColumn Width="32">
|
||||||
@@ -108,11 +113,15 @@
|
|||||||
</ListView>
|
</ListView>
|
||||||
|
|
||||||
<!-- Status text -->
|
<!-- Status text -->
|
||||||
|
<<<<<<< HEAD
|
||||||
|
<TextBlock x:Name="StatusText" Grid.Row="3" Margin="0,0,0,8"
|
||||||
|
=======
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
<TextBlock x:Name="StatusText" Grid.Row="3" Margin="0,0,0,8"
|
<TextBlock x:Name="StatusText" Grid.Row="3" Margin="0,0,0,8"
|
||||||
=======
|
=======
|
||||||
<TextBlock x:Name="StatusText" Grid.Row="2" Margin="0,0,0,8"
|
<TextBlock x:Name="StatusText" Grid.Row="2" Margin="0,0,0,8"
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
Foreground="{DynamicResource TextMutedBrush}" FontSize="11" />
|
Foreground="{DynamicResource TextMutedBrush}" FontSize="11" />
|
||||||
|
|
||||||
<!-- Button row -->
|
<!-- Button row -->
|
||||||
|
|||||||
@@ -45,6 +45,9 @@
|
|||||||
Command="{Binding CancelCommand}" Height="28" Margin="0,0,0,8" />
|
Command="{Binding CancelCommand}" Height="28" Margin="0,0,0,8" />
|
||||||
|
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
<Label Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[export.split.label]}" Margin="0,4,0,0" />
|
<Label Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[export.split.label]}" Margin="0,4,0,0" />
|
||||||
<ComboBox SelectedIndex="{Binding SplitModeIndex}" Height="26" Margin="0,0,0,4">
|
<ComboBox SelectedIndex="{Binding SplitModeIndex}" Height="26" Margin="0,0,0,4">
|
||||||
<ComboBoxItem Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[export.split.single]}" />
|
<ComboBoxItem Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[export.split.single]}" />
|
||||||
@@ -56,8 +59,11 @@
|
|||||||
<ComboBoxItem Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[export.html.layout.tabbed]}" />
|
<ComboBoxItem Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[export.html.layout.tabbed]}" />
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
=======
|
=======
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
<Button Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[audit.btn.exportCsv]}"
|
<Button Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[audit.btn.exportCsv]}"
|
||||||
Command="{Binding ExportCsvCommand}" Height="28" Margin="0,0,0,4" />
|
Command="{Binding ExportCsvCommand}" Height="28" Margin="0,0,0,4" />
|
||||||
<Button Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[audit.btn.exportHtml]}"
|
<Button Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[audit.btn.exportHtml]}"
|
||||||
@@ -87,17 +93,23 @@
|
|||||||
Binding="{Binding SizeBytes, Converter={StaticResource BytesConverter}}"
|
Binding="{Binding SizeBytes, Converter={StaticResource BytesConverter}}"
|
||||||
Width="90" ElementStyle="{StaticResource RightAlignStyle}" />
|
Width="90" ElementStyle="{StaticResource RightAlignStyle}" />
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
<DataGridTextColumn Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[report.col.created]}"
|
<DataGridTextColumn Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[report.col.created]}"
|
||||||
Binding="{Binding Created, StringFormat=yyyy-MM-dd}" Width="100" />
|
Binding="{Binding Created, StringFormat=yyyy-MM-dd}" Width="100" />
|
||||||
<DataGridTextColumn Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[report.col.modified]}"
|
<DataGridTextColumn Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[report.col.modified]}"
|
||||||
Binding="{Binding Modified, StringFormat=yyyy-MM-dd}" Width="100" />
|
Binding="{Binding Modified, StringFormat=yyyy-MM-dd}" Width="100" />
|
||||||
<DataGridTextColumn Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[report.col.path]}"
|
<DataGridTextColumn Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[report.col.path]}"
|
||||||
Binding="{Binding Path}" Width="400" />
|
Binding="{Binding Path}" Width="400" />
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
=======
|
=======
|
||||||
<DataGridTextColumn Header="Created" Binding="{Binding Created, StringFormat=yyyy-MM-dd}" Width="100" />
|
<DataGridTextColumn Header="Created" Binding="{Binding Created, StringFormat=yyyy-MM-dd}" Width="100" />
|
||||||
<DataGridTextColumn Header="Modified" Binding="{Binding Modified, StringFormat=yyyy-MM-dd}" Width="100" />
|
<DataGridTextColumn Header="Modified" Binding="{Binding Modified, StringFormat=yyyy-MM-dd}" Width="100" />
|
||||||
<DataGridTextColumn Header="Path" Binding="{Binding Path}" Width="400" />
|
<DataGridTextColumn Header="Path" Binding="{Binding Path}" Width="400" />
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
</DataGrid>
|
</DataGrid>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
|
|||||||
@@ -19,6 +19,9 @@
|
|||||||
<TextBlock Text="{Binding SourceLibrary}" FontWeight="SemiBold" />
|
<TextBlock Text="{Binding SourceLibrary}" FontWeight="SemiBold" />
|
||||||
<TextBlock Text="{Binding SourceFolderPath}" Foreground="{DynamicResource TextMutedBrush}" />
|
<TextBlock Text="{Binding SourceFolderPath}" Foreground="{DynamicResource TextMutedBrush}" />
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
<<<<<<< HEAD
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock Foreground="{DynamicResource AccentBrush}" FontStyle="Italic" FontSize="11"
|
<TextBlock Foreground="{DynamicResource AccentBrush}" FontStyle="Italic" FontSize="11"
|
||||||
Text="{Binding SelectedFileCount, Mode=OneWay}" />
|
Text="{Binding SelectedFileCount, Mode=OneWay}" />
|
||||||
@@ -33,6 +36,8 @@
|
|||||||
IsChecked="{Binding CopyFolderContents}"
|
IsChecked="{Binding CopyFolderContents}"
|
||||||
Margin="0,4,0,0"
|
Margin="0,4,0,0"
|
||||||
ToolTip="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[transfer.chk.copy_contents.tooltip]}" />
|
ToolTip="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[transfer.chk.copy_contents.tooltip]}" />
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
=======
|
=======
|
||||||
<TextBlock Foreground="{DynamicResource AccentBrush}" FontStyle="Italic" FontSize="11">
|
<TextBlock Foreground="{DynamicResource AccentBrush}" FontStyle="Italic" FontSize="11">
|
||||||
<Run Text="{Binding SelectedFileCount, Mode=OneWay}" />
|
<Run Text="{Binding SelectedFileCount, Mode=OneWay}" />
|
||||||
@@ -47,6 +52,7 @@
|
|||||||
Margin="0,4,0,0"
|
Margin="0,4,0,0"
|
||||||
ToolTip="When on (default), transfer files inside the folder. When off, only the folder is created at the destination." />
|
ToolTip="When on (default), transfer files inside the folder. When off, only the folder is created at the destination." />
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
|
||||||
|
|||||||
@@ -44,11 +44,15 @@
|
|||||||
</GroupBox.Style>
|
</GroupBox.Style>
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<TextBox Text="{Binding SearchQuery, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,2" />
|
<TextBox Text="{Binding SearchQuery, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,2" />
|
||||||
|
<<<<<<< HEAD
|
||||||
|
<TextBlock Text="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[audit.searching]}" FontStyle="Italic" FontSize="10" Foreground="{DynamicResource TextMutedBrush}" Margin="0,0,0,2">
|
||||||
|
=======
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
<TextBlock Text="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[audit.searching]}" FontStyle="Italic" FontSize="10" Foreground="{DynamicResource TextMutedBrush}" Margin="0,0,0,2">
|
<TextBlock Text="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[audit.searching]}" FontStyle="Italic" FontSize="10" Foreground="{DynamicResource TextMutedBrush}" Margin="0,0,0,2">
|
||||||
=======
|
=======
|
||||||
<TextBlock Text="Searching..." FontStyle="Italic" FontSize="10" Foreground="{DynamicResource TextMutedBrush}" Margin="0,0,0,2">
|
<TextBlock Text="Searching..." FontStyle="Italic" FontSize="10" Foreground="{DynamicResource TextMutedBrush}" Margin="0,0,0,2">
|
||||||
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
>>>>>>> f4cc81bb71b935c6f6f050288c9e283dcca5cfa8
|
||||||
|
>>>>>>> b8c09655ac1a3cf1e116d5b5178ec293659c1a72
|
||||||
<TextBlock.Style>
|
<TextBlock.Style>
|
||||||
<Style TargetType="TextBlock">
|
<Style TargetType="TextBlock">
|
||||||
<Setter Property="Visibility" Value="Collapsed" />
|
<Setter Property="Visibility" Value="Collapsed" />
|
||||||
|
|||||||
Reference in New Issue
Block a user