Browse Source

Scrollbars improved and fix with web extensions.

pull/390/head
Sebastian Stehle 7 years ago
parent
commit
d4ca75222b
  1. 14
      src/Squidex.Web/ETagExtensions.cs
  2. 6
      src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs
  3. 2
      src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs
  4. 4
      src/Squidex/app/theme/_common.scss
  5. 2
      src/Squidex/app/theme/_mixins.scss
  6. 6
      src/Squidex/app/theme/_panels.scss

14
src/Squidex.Web/ETagExtensions.cs

@ -18,27 +18,27 @@ namespace Squidex.Web
{ {
private static readonly int GuidLength = Guid.Empty.ToString().Length; private static readonly int GuidLength = Guid.Empty.ToString().Length;
public static string ToEtag<T>(this IReadOnlyList<T> items, IEntityWithVersion app = null) where T : IEntity, IEntityWithVersion public static string ToEtag<T>(this IReadOnlyList<T> items, params IEntityWithVersion[] dependencies) where T : IEntity, IEntityWithVersion
{ {
using (Profiler.Trace("CalculateEtag")) using (Profiler.Trace("CalculateEtag"))
{ {
var unhashed = Unhashed(items, 0, app); var unhashed = Unhashed(items, 0, dependencies);
return unhashed.Sha256Base64(); return unhashed.Sha256Base64();
} }
} }
public static string ToEtag<T>(this IResultList<T> items, IEntityWithVersion app = null) where T : IEntity, IEntityWithVersion public static string ToEtag<T>(this IResultList<T> items, params IEntityWithVersion[] dependencies) where T : IEntity, IEntityWithVersion
{ {
using (Profiler.Trace("CalculateEtag")) using (Profiler.Trace("CalculateEtag"))
{ {
var unhashed = Unhashed(items, items.Total, app); var unhashed = Unhashed(items, items.Total, dependencies);
return unhashed.Sha256Base64(); return unhashed.Sha256Base64();
} }
} }
private static string Unhashed<T>(IReadOnlyList<T> items, long total, IEntityWithVersion app) where T : IEntity, IEntityWithVersion private static string Unhashed<T>(IReadOnlyList<T> items, long total, params IEntityWithVersion[] dependencies) where T : IEntity, IEntityWithVersion
{ {
var sb = new StringBuilder((items.Count * (GuidLength + 8)) + 10); var sb = new StringBuilder((items.Count * (GuidLength + 8)) + 10);
@ -51,10 +51,10 @@ namespace Squidex.Web
sb.Append("_"); sb.Append("_");
sb.Append(total); sb.Append(total);
if (app != null) foreach (var dependency in dependencies)
{ {
sb.Append("_"); sb.Append("_");
sb.Append(app.Version); sb.Append(dependency.Version);
} }
return sb.ToString(); return sb.ToString();

6
src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs

@ -162,12 +162,12 @@ namespace Squidex.Areas.Api.Controllers.Contents
[ApiCosts(1)] [ApiCosts(1)]
public async Task<IActionResult> GetContents(string app, string name, [FromQuery] string ids = null) public async Task<IActionResult> GetContents(string app, string name, [FromQuery] string ids = null)
{ {
var schema = await contentQuery.GetSchemaOrThrowAsync(Context, name);
var contents = await contentQuery.QueryAsync(Context, name, Q.Empty.WithIds(ids).WithODataQuery(Request.QueryString.ToString())); var contents = await contentQuery.QueryAsync(Context, name, Q.Empty.WithIds(ids).WithODataQuery(Request.QueryString.ToString()));
var response = Deferred.AsyncResponse(async () => var response = Deferred.AsyncResponse(async () =>
{ {
var schema = await contentQuery.GetSchemaOrThrowAsync(Context, name);
return await ContentsDto.FromContentsAsync(contents, Context, this, schema, contentWorkflow); return await ContentsDto.FromContentsAsync(contents, Context, this, schema, contentWorkflow);
}); });
@ -176,7 +176,7 @@ namespace Squidex.Areas.Api.Controllers.Contents
Response.Headers["Surrogate-Key"] = contents.ToSurrogateKeys(); Response.Headers["Surrogate-Key"] = contents.ToSurrogateKeys();
} }
Response.Headers[HeaderNames.ETag] = contents.ToEtag(App); Response.Headers[HeaderNames.ETag] = contents.ToEtag(App, schema);
return Ok(response); return Ok(response);
} }

2
src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs

@ -16,7 +16,7 @@ namespace Squidex.Areas.Api.Controllers.News.Service
{ {
public sealed class FeaturesService public sealed class FeaturesService
{ {
private const int FeatureVersion = 3; private const int FeatureVersion = 4;
private static readonly QueryContext Flatten = QueryContext.Default.Flatten(); private static readonly QueryContext Flatten = QueryContext.Default.Flatten();
private readonly SquidexClient<NewsEntity, FeatureDto> client; private readonly SquidexClient<NewsEntity, FeatureDto> client;

4
src/Squidex/app/theme/_common.scss

@ -15,7 +15,9 @@ body {
} }
} }
@include scrollbars(10px, $color-dark2-placeholder, transparent); * {
@include scrollbars(8px, $color-border-dark, transparent);
}
// Common style for user email. // Common style for user email.
.user-email { .user-email {

2
src/Squidex/app/theme/_mixins.scss

@ -57,6 +57,8 @@
& { & {
scrollbar-face-color: $foreground-color; scrollbar-face-color: $foreground-color;
scrollbar-track-color: $background-color; scrollbar-track-color: $background-color;
scrollbar-color: $foreground-color $background-color;
scrollbar-width: thin;
} }
} }

6
src/Squidex/app/theme/_panels.scss

@ -26,9 +26,9 @@
// //
.panel-container { .panel-container {
@include fixed($size-navbar-height, 0, 0, $size-sidebar-width); @include fixed($size-navbar-height, 0, 0, $size-sidebar-width);
@include scrollbars(8px, $color-border-dark);
overflow-x: auto; overflow-x: auto;
overflow-y: hidden; overflow-y: hidden;
@include scrollbars(10px, $color-dark2-placeholder);
} }
// //
@ -254,6 +254,10 @@
border: 0; border: 0;
} }
.panel-content {
@include scrollbars(8px, darken($color-dark2-foreground, 10%), transparent);
}
.panel-close { .panel-close {
& { & {
color: $color-dark2-foreground; color: $color-dark2-foreground;

Loading…
Cancel
Save