diff --git a/Implem.CodeDefiner/Implem.CodeDefiner.csproj b/Implem.CodeDefiner/Implem.CodeDefiner.csproj
index 80b547049..7e935a492 100644
--- a/Implem.CodeDefiner/Implem.CodeDefiner.csproj
+++ b/Implem.CodeDefiner/Implem.CodeDefiner.csproj
@@ -5,9 +5,9 @@
net6.0
Copyright © Implem Inc 2014 - 2023
This program does the automatic code creation and merging of existing code based on the definition. Also it will make the configuration change of sql server database.
- 1.3.46.1
- 1.3.46.1
- 1.3.46.1
+ 1.3.47.0
+ 1.3.47.0
+ 1.3.47.0
Linux
diff --git a/Implem.DefinitionAccessor/Def.cs b/Implem.DefinitionAccessor/Def.cs
index f0bacb61b..d92bdead4 100644
--- a/Implem.DefinitionAccessor/Def.cs
+++ b/Implem.DefinitionAccessor/Def.cs
@@ -478,6 +478,7 @@ public static void SetCodeDefinition()
case "Model_ImageLibCases": Code.Model_ImageLibCases = definitionRow[1].ToString().NoSpace(definitionRow["NoSpace"].ToBool()); SetCodeTable(CodeTable.Model_ImageLibCases, definitionRow, CodeXls); break;
case "Model_ImageLibJsonCases": Code.Model_ImageLibJsonCases = definitionRow[1].ToString().NoSpace(definitionRow["NoSpace"].ToBool()); SetCodeTable(CodeTable.Model_ImageLibJsonCases, definitionRow, CodeXls); break;
case "Model_ImageLibNextCases": Code.Model_ImageLibNextCases = definitionRow[1].ToString().NoSpace(definitionRow["NoSpace"].ToBool()); SetCodeTable(CodeTable.Model_ImageLibNextCases, definitionRow, CodeXls); break;
+ case "Model_ImportByApi": Code.Model_ImportByApi = definitionRow[1].ToString().NoSpace(definitionRow["NoSpace"].ToBool()); SetCodeTable(CodeTable.Model_ImportByApi, definitionRow, CodeXls); break;
case "Model_ImportCases": Code.Model_ImportCases = definitionRow[1].ToString().NoSpace(definitionRow["NoSpace"].ToBool()); SetCodeTable(CodeTable.Model_ImportCases, definitionRow, CodeXls); break;
case "Model_IndexCases": Code.Model_IndexCases = definitionRow[1].ToString().NoSpace(definitionRow["NoSpace"].ToBool()); SetCodeTable(CodeTable.Model_IndexCases, definitionRow, CodeXls); break;
case "Model_IndexJsonCases": Code.Model_IndexJsonCases = definitionRow[1].ToString().NoSpace(definitionRow["NoSpace"].ToBool()); SetCodeTable(CodeTable.Model_IndexJsonCases, definitionRow, CodeXls); break;
@@ -6924,6 +6925,7 @@ public class CodeColumn2nd
public string Model_ImageLibCases;
public string Model_ImageLibJsonCases;
public string Model_ImageLibNextCases;
+ public string Model_ImportByApi;
public string Model_ImportCases;
public string Model_IndexCases;
public string Model_IndexJsonCases;
@@ -7721,6 +7723,7 @@ public class CodeTable
public CodeDefinition Model_ImageLibCases = new CodeDefinition();
public CodeDefinition Model_ImageLibJsonCases = new CodeDefinition();
public CodeDefinition Model_ImageLibNextCases = new CodeDefinition();
+ public CodeDefinition Model_ImportByApi = new CodeDefinition();
public CodeDefinition Model_ImportCases = new CodeDefinition();
public CodeDefinition Model_IndexCases = new CodeDefinition();
public CodeDefinition Model_IndexJsonCases = new CodeDefinition();
diff --git a/Implem.DefinitionAccessor/Implem.DefinitionAccessor.csproj b/Implem.DefinitionAccessor/Implem.DefinitionAccessor.csproj
index 3810a42c5..668826221 100644
--- a/Implem.DefinitionAccessor/Implem.DefinitionAccessor.csproj
+++ b/Implem.DefinitionAccessor/Implem.DefinitionAccessor.csproj
@@ -3,9 +3,9 @@
net6.0
Copyright © Implem Inc 2014 - 2023
- 1.3.46.1
- 1.3.46.1
- 1.3.46.1
+ 1.3.47.0
+ 1.3.47.0
+ 1.3.47.0
disable
diff --git a/Implem.DisplayAccessor/Implem.DisplayAccessor.csproj b/Implem.DisplayAccessor/Implem.DisplayAccessor.csproj
index 378a29b06..868e0ea86 100644
--- a/Implem.DisplayAccessor/Implem.DisplayAccessor.csproj
+++ b/Implem.DisplayAccessor/Implem.DisplayAccessor.csproj
@@ -3,9 +3,9 @@
net6.0
Copyright © Implem Inc 2014 - 2023
- 1.3.46.1
- 1.3.46.1
- 1.3.46.1
+ 1.3.47.0
+ 1.3.47.0
+ 1.3.47.0
disable
diff --git a/Implem.Factory/Implem.Factory.csproj b/Implem.Factory/Implem.Factory.csproj
index 318e9c6af..9ca7077a5 100644
--- a/Implem.Factory/Implem.Factory.csproj
+++ b/Implem.Factory/Implem.Factory.csproj
@@ -3,9 +3,9 @@
net6.0
Copyright © Implem Inc 2014 - 2023
- 1.3.46.1
- 1.3.46.1
- 1.3.46.1
+ 1.3.47.0
+ 1.3.47.0
+ 1.3.47.0
disable
diff --git a/Implem.Libraries/Implem.Libraries.csproj b/Implem.Libraries/Implem.Libraries.csproj
index 219eec2e4..b875590f5 100644
--- a/Implem.Libraries/Implem.Libraries.csproj
+++ b/Implem.Libraries/Implem.Libraries.csproj
@@ -3,9 +3,9 @@
net6.0
Copyright © Implem Inc 2014 - 2023
- 1.3.46.1
- 1.3.46.1
- 1.3.46.1
+ 1.3.47.0
+ 1.3.47.0
+ 1.3.47.0
disable
diff --git a/Implem.ParameterAccessor/Implem.ParameterAccessor.csproj b/Implem.ParameterAccessor/Implem.ParameterAccessor.csproj
index 4960ea457..2f062727e 100644
--- a/Implem.ParameterAccessor/Implem.ParameterAccessor.csproj
+++ b/Implem.ParameterAccessor/Implem.ParameterAccessor.csproj
@@ -3,9 +3,9 @@
net6.0
Copyright © Implem Inc 2014 - 2023
- 1.3.46.1
- 1.3.46.1
- 1.3.46.1
+ 1.3.47.0
+ 1.3.47.0
+ 1.3.47.0
disable
diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Body.txt
index 7fc8b641b..8370fe7d2 100644
--- a/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Body.txt
+++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Body.txt
@@ -93,6 +93,7 @@ namespace Implem.Pleasanter.Models
+
diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_ImportByApi.json b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_ImportByApi.json
new file mode 100644
index 000000000..9579e2d77
--- /dev/null
+++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_ImportByApi.json
@@ -0,0 +1,5 @@
+{
+ "Id": "Model_ImportByApi",
+ "Indent": "2",
+ "Include": "Items"
+}
\ No newline at end of file
diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_ImportByApi_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_ImportByApi_Body.txt
new file mode 100644
index 000000000..9e7a7e700
--- /dev/null
+++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_ImportByApi_Body.txt
@@ -0,0 +1,39 @@
+public ContentResultInheritance ImportByApi(Context context)
+{
+ SetSite(
+ context: context,
+ initSiteSettings: true,
+ setSiteIntegration: true,
+ setAllChoices: true);
+ if (!Site.WithinApiLimits(context: context))
+ {
+ return ApiResults.Get(ApiResponses.OverLimitApi(
+ context: context,
+ siteId: Site.SiteId,
+ limitPerSite: context.ContractSettings.ApiLimit()));
+ }
+ switch (Site.ReferenceType)
+ {
+ case "Issues":
+ if (SiteId == ReferenceId)
+ {
+ return IssueUtilities.ImportByApi(
+ context: context,
+ ss: Site.SiteSettings,
+ siteModel: Site);
+ }
+ break;
+ case "Results":
+ if (SiteId == ReferenceId)
+ {
+ return ResultUtilities.ImportByApi(
+ context: context,
+ ss: Site.SiteSettings,
+ siteModel: Site);
+ }
+ break;
+ default:
+ return ApiResults.Get(ApiResponses.BadRequest(context: context));
+ }
+ return ApiResults.Get(ApiResponses.BadRequest(context: context));
+}
\ No newline at end of file
diff --git a/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Utilities_Import_Body.txt b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Utilities_Import_Body.txt
index 27a47a2f7..465532292 100644
--- a/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Utilities_Import_Body.txt
+++ b/Implem.Pleasanter/App_Data/Definitions/Definition_Code/Model_Utilities_Import_Body.txt
@@ -60,14 +60,7 @@
}
var invalidColumn = Imports.ColumnValidate(context, ss, columnHash.Values.Select(o => o.Column.ColumnName));
if (invalidColumn != null) return invalidColumn;
- Repository.ExecuteNonQuery(
- context: context,
- transactional: true,
- statements: new List()
- .OnImportingExtendedSqls(
- context: context,
- siteId: ss.SiteId)
- .ToArray());
+ ImportUtilities.SetOnImportingExtendedSqls(context, ss);
var #modelName#Hash = new Dictionary();
var importKeyColumnName = context.Forms.Data("Key");
var importKeyColumn = columnHash
@@ -217,14 +210,7 @@
insertCount++;
}
}
- Repository.ExecuteNonQuery(
- context: context,
- transactional: true,
- statements: new List()
- .OnImportedExtendedSqls(
- context: context,
- siteId: ss.SiteId)
- .ToArray());
+ ImportUtilities.SetOnImportedExtendedSqls(context, ss);
ss.Notifications.ForEach(notification =>
{
var body = new System.Text.StringBuilder();
@@ -267,4 +253,322 @@
{
return Messages.ResponseFileNotFound(context: context).ToJson();
}
+}
+
+public static ContentResultInheritance ImportByApi(
+ Context context,
+ SiteSettings ss,
+ SiteModel siteModel)
+{
+ if (!Mime.ValidateOnApi(contentType: context.ContentType, multipart: true))
+ {
+ return ApiResults.BadRequest(context: context);
+ }
+ if (context.ContractSettings.Import == false)
+ {
+ return null;
+ }
+ var invalid = #ModelName#Validators.OnImporting(
+ context: context,
+ ss: ss,
+ api: true);
+ switch (invalid.Type)
+ {
+ case Error.Types.None: break;
+ default:return ApiResults.Error(
+ context: context,
+ errorData: invalid);
+ }
+ var api = context.RequestDataString.Deserialize();
+ var updatableImport = api.UpdatableImport;
+ var encoding = api.Encoding;
+ var key = api.Key;
+ Csv csv;
+ try
+ {
+ csv = new Csv(
+ csv: context.PostedFiles.FirstOrDefault().Byte(),
+ encoding: encoding);
+ }
+ catch
+ {
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Messages.FailedReadFile(context: context).Text));
+ }
+ var count = csv.Rows.Count();
+ if (Parameters.General.ImportMax > 0 && Parameters.General.ImportMax < count)
+ {
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Error.Types.ImportMax.Message(
+ context: context,
+ data: Parameters.General.ImportMax.ToString()).Text));
+ }
+ if (context.ContractSettings.ItemsLimit(
+ context: context,
+ siteId: ss.SiteId,
+ number: count))
+ {
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Error.Types.ItemsLimit.Message(context: context).Text));
+ }
+ if (csv != null && count > 0)
+ {
+ var columnHash = ImportUtilities.GetColumnHash(ss, csv);
+ var idColumn = columnHash
+ .Where(o => o.Value.Column.ColumnName == "#ModelName#Id")
+ .Select(o => new { Id = o.Key })
+ .FirstOrDefault()?.Id ?? -1;
+ if (updatableImport && idColumn > -1)
+ {
+ var exists = ExistsLockedRecord(
+ context: context,
+ ss: ss,
+ targets: csv.Rows.Select(o => o[idColumn].ToLong()).ToList());
+ switch (exists.Type)
+ {
+ case Error.Types.None: break;
+ default: return ApiResults.Error(
+ context: context,
+ errorData: exists);
+ }
+ }
+ var invalidColumn = Imports.ColumnValidate(context, ss, columnHash.Values.Select(o => o.Column.ColumnName));
+ if (invalidColumn != null) return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: invalidColumn));
+ ImportUtilities.SetOnImportingExtendedSqls(context, ss);
+ var #modelName#Hash = new Dictionary();
+ var importKeyColumnName = key;
+ var importKeyColumn = columnHash
+ .FirstOrDefault(column => column.Value.Column.ColumnName == importKeyColumnName);
+ if (updatableImport && importKeyColumn.Value == null)
+ {
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Messages.NotContainKeyColumn(context: context).Text));
+ }
+ var csvRows = csv.Rows
+ .Select((o, i) => new { Index = i, Row = o })
+ .ToDictionary(o => o.Index, o => o.Row);
+ foreach (var data in csvRows)
+ {
+ var #modelName#Model = new #ModelName#Model(
+ context: context,
+ ss: ss);
+ if (updatableImport
+ && !data.Value[importKeyColumn.Key].IsNullOrEmpty())
+ {
+ var view = new View();
+ view.AddColumnFilterHash(
+ context: context,
+ ss: ss,
+ column: importKeyColumn.Value.Column,
+ objectValue: data.Value[importKeyColumn.Key]);
+ view.AddColumnFilterSearchTypes(
+ columnName: importKeyColumnName,
+ searchType: Column.SearchTypes.ExactMatch);
+ var model = new #ModelName#Model(
+ context: context,
+ ss: ss,
+ #modelName#Id: 0,
+ view: view);
+ if (model.AccessStatus == Databases.AccessStatuses.Selected)
+ {
+ #modelName#Model = model;
+ }
+ else if (model.AccessStatus == Databases.AccessStatuses.Overlap)
+ {
+ return ApiResults.Error(
+ context: context,
+ errorData: new ErrorData(
+ type: Error.Types.OverlapCsvImport,
+ data: new string[] {
+ (data.Key + 1).ToString(),
+ importKeyColumn.Value.Column.GridLabelText,
+ data.Value[importKeyColumn.Key]}));
+ }
+ }
+ #modelName#Model.SetByCsvRow(
+ context: context,
+ ss: ss,
+ columnHash: columnHash,
+ row: data.Value);
+ #modelName#Hash.Add(data.Key, #modelName#Model);
+ }
+ var inputErrorData = #ModelName#Validators.OnInputValidating(
+ context: context,
+ ss: ss,
+ #modelName#Hash: #modelName#Hash).FirstOrDefault();
+ switch (inputErrorData.Type)
+ {
+ case Error.Types.None: break;
+ default: return ApiResults.Error(
+ context: context,
+ errorData: inputErrorData);
+ }
+ var insertCount = 0;
+ var updateCount = 0;
+ foreach (var data in #modelName#Hash)
+ {
+ var #modelName#Model = data.Value;
+ if (#modelName#Model.AccessStatus == Databases.AccessStatuses.Selected)
+ {
+ ErrorData errorData = null;
+ while (errorData?.Type != Error.Types.None)
+ {
+ switch (errorData?.Type)
+ {
+ case Error.Types.Duplicated:
+ var duplicatedColumn = ss.GetColumn(
+ context: context,
+ columnName: errorData.ColumnName);
+ return ApiResults.Duplicated(
+ context: context,
+ message: duplicatedColumn?.MessageWhenDuplicated.IsNullOrEmpty() != false
+ ? Displays.Duplicated(
+ context: context,
+ data: duplicatedColumn?.LabelText)
+ : duplicatedColumn?.MessageWhenDuplicated);
+ case null:
+ case Error.Types.UpdateConflicts:
+ #modelName#Model = new #ModelName#Model(
+ context: context,
+ ss: ss,
+ #modelName#Id: #modelName#Model.#ModelName#Id);
+ var previousTitle = #modelName#Model.Title.DisplayValue;
+ #modelName#Model.SetByCsvRow(
+ context: context,
+ ss: ss,
+ columnHash: columnHash,
+ row: csvRows.Get(data.Key));
+ switch (#modelName#Model.AccessStatus)
+ {
+ case Databases.AccessStatuses.Selected:
+ if (#modelName#Model.Updated(context: context))
+ {
+ #modelName#Model.VerUp = Versions.MustVerUp(
+ context: context,
+ ss: ss,
+ baseModel: #modelName#Model);
+ errorData = #modelName#Model.Update(
+ context: context,
+ ss: ss,
+ extendedSqls: false,
+ previousTitle: previousTitle,
+ get: false);
+ updateCount++;
+ }
+ else
+ {
+ errorData = new ErrorData(type: Error.Types.None);
+ }
+ break;
+ case Databases.AccessStatuses.NotFound:
+ #modelName#Model.#ModelName#Id = 0;
+ #modelName#Model.Ver = 1;
+ errorData = #modelName#Model.Create(
+ context: context,
+ ss: ss,
+ extendedSqls: false);
+ insertCount++;
+ break;
+ default:
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Messages.UpdateConflicts(context: context).Text));
+ }
+ break;
+ default:
+ return ApiResults.Error(
+ context: context,
+ errorData: errorData);
+ }
+ }
+ }
+ else
+ {
+ #modelName#Model.#ModelName#Id = 0;
+ #modelName#Model.Ver = 1;
+ var errorData = #modelName#Model.Create(
+ context: context,
+ ss: ss,
+ extendedSqls: false);
+ switch (errorData.Type)
+ {
+ case Error.Types.None:
+ break;
+ case Error.Types.Duplicated:
+ var duplicatedColumn = ss.GetColumn(
+ context: context,
+ columnName: errorData.ColumnName);
+ return ApiResults.Duplicated(
+ context: context,
+ message: duplicatedColumn?.MessageWhenDuplicated.IsNullOrEmpty() != false
+ ? Displays.Duplicated(
+ context: context,
+ data: duplicatedColumn?.LabelText)
+ : duplicatedColumn?.MessageWhenDuplicated);
+ default:
+ return ApiResults.Error(
+ context: context,
+ errorData: errorData);
+ }
+ insertCount++;
+ }
+ }
+ ImportUtilities.SetOnImportedExtendedSqls(context, ss);
+ ss.Notifications.ForEach(notification =>
+ {
+ var body = new System.Text.StringBuilder();
+ body.Append(Locations.ItemIndexAbsoluteUri(
+ context: context,
+ ss.SiteId) + "\n");
+ body.Append(
+ $"{Displays.#TableName#_Updator(context: context)}: ",
+ $"{context.User.Name}\n");
+ if (notification.AfterImport != false)
+ {
+ notification.Send(
+ context: context,
+ ss: ss,
+ title: Displays.Imported(
+ context: context,
+ data: new string[]
+ {
+ ss.Title,
+ insertCount.ToString(),
+ updateCount.ToString()
+ }),
+ body: body.ToString());
+ }
+ });
+ return ApiResults.Success(
+ id: context.Id,
+ limitPerDate: context.ContractSettings.ApiLimit(),
+ limitRemaining: context.ContractSettings.ApiLimit() - ss.ApiCount,
+ message: Messages.Imported(
+ context: context,
+ data: new string[]
+ {
+ ss.Title,
+ insertCount.ToString(),
+ updateCount.ToString()
+ }).Text);
+ }
+ else
+ {
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Messages.FileNotFound(context: context).Text));
+ }
}
\ No newline at end of file
diff --git a/Implem.Pleasanter/Controllers/Api/ItemsController.cs b/Implem.Pleasanter/Controllers/Api/ItemsController.cs
index e9e533dee..b0736e71d 100644
--- a/Implem.Pleasanter/Controllers/Api/ItemsController.cs
+++ b/Implem.Pleasanter/Controllers/Api/ItemsController.cs
@@ -1,11 +1,16 @@
using Implem.Libraries.Utilities;
using Implem.Pleasanter.Libraries.Requests;
using Implem.Pleasanter.Libraries.Responses;
+using Implem.Pleasanter.Libraries.Web;
using Implem.Pleasanter.Models;
using Implem.PleasanterFilters;
using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
using System.IO;
+using System.Linq;
+
namespace Implem.Pleasanter.Controllers.Api
{
[CheckApiContextAttributes]
@@ -128,6 +133,24 @@ public ContentResult BulkDelete(long id)
return result.ToHttpResponse(request: Request);
}
+ [HttpPost("{id}/Import")]
+ public ContentResult Import(long id)
+ {
+ var body = Request.Form["parameters"];
+ var contentType = Request.ContentType.Split(';')[0].Trim();
+ var context = new Context(
+ apiRequestBody: body,
+ files: Request.Form.Files.ToList(),
+ contentType: contentType,
+ api: true);
+ var log = new SysLogModel(context: context);
+ var result = context.Authenticated
+ ? new ItemModel(context: context, referenceId: id).ImportByApi(context: context)
+ : ApiResults.Unauthorized(context: context);
+ log.Finish(context: context, responseSize: result.Content.Length);
+ return result.ToHttpResponse(request: Request);
+ }
+
[HttpPost("{id}/Export")]
public ContentResult Export(long id)
{
diff --git a/Implem.Pleasanter/Dockerfile b/Implem.Pleasanter/Dockerfile
index 15b2d185a..a1f6677e7 100644
--- a/Implem.Pleasanter/Dockerfile
+++ b/Implem.Pleasanter/Dockerfile
@@ -1,7 +1,7 @@
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
-RUN apt-get update && apt-get install -y libgdiplus
+RUN apt-get update && apt-get install -y libgdiplus curl
WORKDIR /app
EXPOSE 80
@@ -24,9 +24,9 @@ WORKDIR "/src/Implem.Pleasanter"
RUN dotnet build "Implem.Pleasanter.csproj" -c Release -o /app/build
FROM build AS publish
-RUN apt-get update && apt-get install -y jq
RUN dotnet publish "Implem.Pleasanter.csproj" -c Release -o /app/publish
-RUN cat App_Data/Parameters/Rds.json \
+RUN curl -o /usr/bin/jq -L https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 && chmod +x /usr/bin/jq && \
+ cat App_Data/Parameters/Rds.json \
| jq '.Dbms|="PostgreSQL" | .SaConnectionString|=null | .OwnerConnectionString|=null | .UserConnectionString|=null' \
> /app/publish/App_Data/Parameters/Rds.json
diff --git a/Implem.Pleasanter/Implem.Pleasanter.csproj b/Implem.Pleasanter/Implem.Pleasanter.csproj
index 1c786b9be..cbb0c0539 100644
--- a/Implem.Pleasanter/Implem.Pleasanter.csproj
+++ b/Implem.Pleasanter/Implem.Pleasanter.csproj
@@ -1,13 +1,13 @@
-
+
net6.0
Copyright © Implem Inc 2014 - 2023
Business application platform
Implem.Pleasanter
- 1.3.46.1
- 1.3.46.1
- 1.3.46.1
+ 1.3.47.0
+ 1.3.47.0
+ 1.3.47.0
disable
Linux
..\docker-compose.dcproj
@@ -64,7 +64,7 @@
-
+
@@ -94,6 +94,7 @@
+
diff --git a/Implem.Pleasanter/Libraries/Requests/Context.cs b/Implem.Pleasanter/Libraries/Requests/Context.cs
index e6e3790d3..b6b830974 100644
--- a/Implem.Pleasanter/Libraries/Requests/Context.cs
+++ b/Implem.Pleasanter/Libraries/Requests/Context.cs
@@ -192,9 +192,9 @@ public Context(
SetTenantCaches();
}
- public Context(ICollection files, string apiRequestBody = null, bool api = false)
+ public Context(ICollection files, string apiRequestBody = null, string contentType = null, bool api = false)
{
- Set(apiRequestBody: apiRequestBody);
+ Set(apiRequestBody: apiRequestBody, contentType: contentType);
SetPostedFiles(files: files);
Api = api;
}
@@ -318,36 +318,40 @@ public void SetItemProperties()
{
switch (Controller)
{
+ case "binaries":
case "items":
case "publishes":
- Repository.ExecuteTable(
- context: this,
- statements: Rds.SelectItems(
- column: Rds.ItemsColumn()
- .SiteId()
- .ReferenceId()
- .Title(),
- where: Rds.ItemsWhere()
- .Add(or: Rds.ItemsWhere()
- .ReferenceId(Id)
- .ReferenceId(sub: Rds.SelectItems(
- column: Rds.ItemsColumn().SiteId(),
- where: Rds.ItemsWhere().ReferenceId(Id)))),
- distinct: true))
- .AsEnumerable()
- .ForEach(dataRow =>
- {
- if (dataRow.Long("SiteId") == dataRow.Long("ReferenceId"))
- {
- SiteId = dataRow.Long("ReferenceId");
- SiteTitle = dataRow.String("Title");
- }
- else
+ if (Id > 0)
+ {
+ Repository.ExecuteTable(
+ context: this,
+ statements: Rds.SelectItems(
+ column: Rds.ItemsColumn()
+ .SiteId()
+ .ReferenceId()
+ .Title(),
+ where: Rds.ItemsWhere()
+ .Add(or: Rds.ItemsWhere()
+ .ReferenceId(Id)
+ .ReferenceId(sub: Rds.SelectItems(
+ column: Rds.ItemsColumn().SiteId(),
+ where: Rds.ItemsWhere().ReferenceId(Id)))),
+ distinct: true))
+ .AsEnumerable()
+ .ForEach(dataRow =>
{
- RecordTitle = dataRow.String("Title");
- }
- TargetTenantId = dataRow.Int("TenantId");
- });
+ if (dataRow.Long("SiteId") == dataRow.Long("ReferenceId"))
+ {
+ SiteId = dataRow.Long("ReferenceId");
+ SiteTitle = dataRow.String("Title");
+ }
+ else
+ {
+ RecordTitle = dataRow.String("Title");
+ }
+ TargetTenantId = dataRow.Int("TenantId");
+ });
+ }
Page = Controller + "/"
+ SiteId
+ (TrashboxActions()
diff --git a/Implem.Pleasanter/Libraries/Requests/ImportApi.cs b/Implem.Pleasanter/Libraries/Requests/ImportApi.cs
new file mode 100644
index 000000000..3e22594cf
--- /dev/null
+++ b/Implem.Pleasanter/Libraries/Requests/ImportApi.cs
@@ -0,0 +1,12 @@
+using Implem.Pleasanter.Libraries.Settings;
+using System;
+namespace Implem.Pleasanter.Libraries.Requests
+{
+ [Serializable]
+ public class ImportApi : Api
+ {
+ public bool UpdatableImport { get; set; }
+ public string Encoding { get; set; }
+ public string Key {get; set;}
+ }
+}
\ No newline at end of file
diff --git a/Implem.Pleasanter/Libraries/Settings/ImportUtilities.cs b/Implem.Pleasanter/Libraries/Settings/ImportUtilities.cs
index 681cb4858..3dcaaf4a0 100644
--- a/Implem.Pleasanter/Libraries/Settings/ImportUtilities.cs
+++ b/Implem.Pleasanter/Libraries/Settings/ImportUtilities.cs
@@ -1,5 +1,9 @@
using Implem.Libraries.Classes;
+using Implem.Libraries.DataSources.SqlServer;
using Implem.Libraries.Utilities;
+using Implem.Pleasanter.Libraries.DataSources;
+using Implem.Pleasanter.Libraries.General;
+using Implem.Pleasanter.Libraries.Requests;
using System.Collections.Generic;
using System.Linq;
namespace Implem.Pleasanter.Libraries.Settings
@@ -88,5 +92,31 @@ public static string RecordingData(
: string.Empty;
}
}
+
+ public static int SetOnImportingExtendedSqls(Context context, SiteSettings ss)
+ {
+ return Repository.ExecuteNonQuery(
+ context: context,
+ transactional: true,
+ statements: new List()
+ .OnImportingExtendedSqls(
+ context: context,
+ siteId: ss.SiteId)
+ .ToArray());
+ }
+
+ public static int SetOnImportedExtendedSqls(Context context, SiteSettings ss)
+ {
+ return Repository.ExecuteNonQuery(
+ context: context,
+ transactional: true,
+ statements: new List()
+ .OnImportedExtendedSqls(
+ context: context,
+ siteId: ss.SiteId)
+ .ToArray());
+ }
+
+
}
}
diff --git a/Implem.Pleasanter/Libraries/Web/Mime.cs b/Implem.Pleasanter/Libraries/Web/Mime.cs
index 83431451f..f6e657ea0 100644
--- a/Implem.Pleasanter/Libraries/Web/Mime.cs
+++ b/Implem.Pleasanter/Libraries/Web/Mime.cs
@@ -8,14 +8,16 @@ public static string Type(string fileDownloadName)
return MimeKit.MimeTypes.GetMimeType(fileDownloadName);
}
- public static bool ValidateOnApi(string contentType)
+ public static bool ValidateOnApi(string contentType, bool multipart = false)
{
if (Parameters.Security.MimeTypeCheckOnApi)
{
switch (contentType?.ToLower())
{
case "application/json":
- return true;
+ return !multipart;
+ case "multipart/form-data":
+ return multipart;
default:
return false;
}
diff --git a/Implem.Pleasanter/Models/Binaries/BinaryUtilities.cs b/Implem.Pleasanter/Models/Binaries/BinaryUtilities.cs
index 9806abb74..6fdb104ad 100644
--- a/Implem.Pleasanter/Models/Binaries/BinaryUtilities.cs
+++ b/Implem.Pleasanter/Models/Binaries/BinaryUtilities.cs
@@ -730,7 +730,10 @@ public static string UploadFile(
System.Net.Http.Headers.ContentRangeHeaderValue contentRange )
{
var itemModel = new ItemModel(context, id);
- var ss = itemModel.GetSite(context, initSiteSettings: true).SiteSettings;
+ itemModel.SetSite(
+ context: context,
+ initSiteSettings: true);
+ var ss = itemModel.Site.SiteSettings;
var column = ss.GetColumn(context, TrimIdSuffix(context.Forms.Get("ColumnName")));
var attachments = context.Forms.Get("AttachmentsData").Deserialize();
var fileHash = context.Forms.Get("FileHash");
diff --git a/Implem.Pleasanter/Models/Binaries/BinaryValidators.cs b/Implem.Pleasanter/Models/Binaries/BinaryValidators.cs
index 935eace68..7eb01e99f 100644
--- a/Implem.Pleasanter/Models/Binaries/BinaryValidators.cs
+++ b/Implem.Pleasanter/Models/Binaries/BinaryValidators.cs
@@ -254,6 +254,13 @@ public static Error.Types OnUploading(
{
return Error.Types.OverLimitQuantity;
}
+ var errorType = OverLimitSize(
+ attachments: attachments,
+ column: column);
+ if (errorType != Error.Types.None)
+ {
+ return errorType;
+ }
switch (BinaryUtilities.BinaryStorageProvider(column))
{
case "LocalFolder":
diff --git a/Implem.Pleasanter/Models/Issues/IssueUtilities.cs b/Implem.Pleasanter/Models/Issues/IssueUtilities.cs
index 4f0122f5e..0bbefff4a 100644
--- a/Implem.Pleasanter/Models/Issues/IssueUtilities.cs
+++ b/Implem.Pleasanter/Models/Issues/IssueUtilities.cs
@@ -6454,14 +6454,7 @@ public static string Import(Context context, SiteModel siteModel)
}
var invalidColumn = Imports.ColumnValidate(context, ss, columnHash.Values.Select(o => o.Column.ColumnName), "CompletionTime");
if (invalidColumn != null) return invalidColumn;
- Repository.ExecuteNonQuery(
- context: context,
- transactional: true,
- statements: new List()
- .OnImportingExtendedSqls(
- context: context,
- siteId: ss.SiteId)
- .ToArray());
+ ImportUtilities.SetOnImportingExtendedSqls(context, ss);
var issueHash = new Dictionary();
var importKeyColumnName = context.Forms.Data("Key");
var importKeyColumn = columnHash
@@ -6662,14 +6655,7 @@ public static string Import(Context context, SiteModel siteModel)
insertCount++;
}
}
- Repository.ExecuteNonQuery(
- context: context,
- transactional: true,
- statements: new List()
- .OnImportedExtendedSqls(
- context: context,
- siteId: ss.SiteId)
- .ToArray());
+ ImportUtilities.SetOnImportedExtendedSqls(context, ss);
ss.Notifications.ForEach(notification =>
{
var body = new System.Text.StringBuilder();
@@ -6714,6 +6700,324 @@ public static string Import(Context context, SiteModel siteModel)
}
}
+ public static ContentResultInheritance ImportByApi(
+ Context context,
+ SiteSettings ss,
+ SiteModel siteModel)
+ {
+ if (!Mime.ValidateOnApi(contentType: context.ContentType, multipart: true))
+ {
+ return ApiResults.BadRequest(context: context);
+ }
+ if (context.ContractSettings.Import == false)
+ {
+ return null;
+ }
+ var invalid = IssueValidators.OnImporting(
+ context: context,
+ ss: ss,
+ api: true);
+ switch (invalid.Type)
+ {
+ case Error.Types.None: break;
+ default:return ApiResults.Error(
+ context: context,
+ errorData: invalid);
+ }
+ var api = context.RequestDataString.Deserialize();
+ var updatableImport = api.UpdatableImport;
+ var encoding = api.Encoding;
+ var key = api.Key;
+ Csv csv;
+ try
+ {
+ csv = new Csv(
+ csv: context.PostedFiles.FirstOrDefault().Byte(),
+ encoding: encoding);
+ }
+ catch
+ {
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Messages.FailedReadFile(context: context).Text));
+ }
+ var count = csv.Rows.Count();
+ if (Parameters.General.ImportMax > 0 && Parameters.General.ImportMax < count)
+ {
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Error.Types.ImportMax.Message(
+ context: context,
+ data: Parameters.General.ImportMax.ToString()).Text));
+ }
+ if (context.ContractSettings.ItemsLimit(
+ context: context,
+ siteId: ss.SiteId,
+ number: count))
+ {
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Error.Types.ItemsLimit.Message(context: context).Text));
+ }
+ if (csv != null && count > 0)
+ {
+ var columnHash = ImportUtilities.GetColumnHash(ss, csv);
+ var idColumn = columnHash
+ .Where(o => o.Value.Column.ColumnName == "IssueId")
+ .Select(o => new { Id = o.Key })
+ .FirstOrDefault()?.Id ?? -1;
+ if (updatableImport && idColumn > -1)
+ {
+ var exists = ExistsLockedRecord(
+ context: context,
+ ss: ss,
+ targets: csv.Rows.Select(o => o[idColumn].ToLong()).ToList());
+ switch (exists.Type)
+ {
+ case Error.Types.None: break;
+ default: return ApiResults.Error(
+ context: context,
+ errorData: exists);
+ }
+ }
+ var invalidColumn = Imports.ColumnValidate(context, ss, columnHash.Values.Select(o => o.Column.ColumnName), "CompletionTime");
+ if (invalidColumn != null) return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: invalidColumn));
+ ImportUtilities.SetOnImportingExtendedSqls(context, ss);
+ var issueHash = new Dictionary();
+ var importKeyColumnName = key;
+ var importKeyColumn = columnHash
+ .FirstOrDefault(column => column.Value.Column.ColumnName == importKeyColumnName);
+ if (updatableImport && importKeyColumn.Value == null)
+ {
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Messages.NotContainKeyColumn(context: context).Text));
+ }
+ var csvRows = csv.Rows
+ .Select((o, i) => new { Index = i, Row = o })
+ .ToDictionary(o => o.Index, o => o.Row);
+ foreach (var data in csvRows)
+ {
+ var issueModel = new IssueModel(
+ context: context,
+ ss: ss);
+ if (updatableImport
+ && !data.Value[importKeyColumn.Key].IsNullOrEmpty())
+ {
+ var view = new View();
+ view.AddColumnFilterHash(
+ context: context,
+ ss: ss,
+ column: importKeyColumn.Value.Column,
+ objectValue: data.Value[importKeyColumn.Key]);
+ view.AddColumnFilterSearchTypes(
+ columnName: importKeyColumnName,
+ searchType: Column.SearchTypes.ExactMatch);
+ var model = new IssueModel(
+ context: context,
+ ss: ss,
+ issueId: 0,
+ view: view);
+ if (model.AccessStatus == Databases.AccessStatuses.Selected)
+ {
+ issueModel = model;
+ }
+ else if (model.AccessStatus == Databases.AccessStatuses.Overlap)
+ {
+ return ApiResults.Error(
+ context: context,
+ errorData: new ErrorData(
+ type: Error.Types.OverlapCsvImport,
+ data: new string[] {
+ (data.Key + 1).ToString(),
+ importKeyColumn.Value.Column.GridLabelText,
+ data.Value[importKeyColumn.Key]}));
+ }
+ }
+ issueModel.SetByCsvRow(
+ context: context,
+ ss: ss,
+ columnHash: columnHash,
+ row: data.Value);
+ issueHash.Add(data.Key, issueModel);
+ }
+ var inputErrorData = IssueValidators.OnInputValidating(
+ context: context,
+ ss: ss,
+ issueHash: issueHash).FirstOrDefault();
+ switch (inputErrorData.Type)
+ {
+ case Error.Types.None: break;
+ default: return ApiResults.Error(
+ context: context,
+ errorData: inputErrorData);
+ }
+ var insertCount = 0;
+ var updateCount = 0;
+ foreach (var data in issueHash)
+ {
+ var issueModel = data.Value;
+ if (issueModel.AccessStatus == Databases.AccessStatuses.Selected)
+ {
+ ErrorData errorData = null;
+ while (errorData?.Type != Error.Types.None)
+ {
+ switch (errorData?.Type)
+ {
+ case Error.Types.Duplicated:
+ var duplicatedColumn = ss.GetColumn(
+ context: context,
+ columnName: errorData.ColumnName);
+ return ApiResults.Duplicated(
+ context: context,
+ message: duplicatedColumn?.MessageWhenDuplicated.IsNullOrEmpty() != false
+ ? Displays.Duplicated(
+ context: context,
+ data: duplicatedColumn?.LabelText)
+ : duplicatedColumn?.MessageWhenDuplicated);
+ case null:
+ case Error.Types.UpdateConflicts:
+ issueModel = new IssueModel(
+ context: context,
+ ss: ss,
+ issueId: issueModel.IssueId);
+ var previousTitle = issueModel.Title.DisplayValue;
+ issueModel.SetByCsvRow(
+ context: context,
+ ss: ss,
+ columnHash: columnHash,
+ row: csvRows.Get(data.Key));
+ switch (issueModel.AccessStatus)
+ {
+ case Databases.AccessStatuses.Selected:
+ if (issueModel.Updated(context: context))
+ {
+ issueModel.VerUp = Versions.MustVerUp(
+ context: context,
+ ss: ss,
+ baseModel: issueModel);
+ errorData = issueModel.Update(
+ context: context,
+ ss: ss,
+ extendedSqls: false,
+ previousTitle: previousTitle,
+ get: false);
+ updateCount++;
+ }
+ else
+ {
+ errorData = new ErrorData(type: Error.Types.None);
+ }
+ break;
+ case Databases.AccessStatuses.NotFound:
+ issueModel.IssueId = 0;
+ issueModel.Ver = 1;
+ errorData = issueModel.Create(
+ context: context,
+ ss: ss,
+ extendedSqls: false);
+ insertCount++;
+ break;
+ default:
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Messages.UpdateConflicts(context: context).Text));
+ }
+ break;
+ default:
+ return ApiResults.Error(
+ context: context,
+ errorData: errorData);
+ }
+ }
+ }
+ else
+ {
+ issueModel.IssueId = 0;
+ issueModel.Ver = 1;
+ var errorData = issueModel.Create(
+ context: context,
+ ss: ss,
+ extendedSqls: false);
+ switch (errorData.Type)
+ {
+ case Error.Types.None:
+ break;
+ case Error.Types.Duplicated:
+ var duplicatedColumn = ss.GetColumn(
+ context: context,
+ columnName: errorData.ColumnName);
+ return ApiResults.Duplicated(
+ context: context,
+ message: duplicatedColumn?.MessageWhenDuplicated.IsNullOrEmpty() != false
+ ? Displays.Duplicated(
+ context: context,
+ data: duplicatedColumn?.LabelText)
+ : duplicatedColumn?.MessageWhenDuplicated);
+ default:
+ return ApiResults.Error(
+ context: context,
+ errorData: errorData);
+ }
+ insertCount++;
+ }
+ }
+ ImportUtilities.SetOnImportedExtendedSqls(context, ss);
+ ss.Notifications.ForEach(notification =>
+ {
+ var body = new System.Text.StringBuilder();
+ body.Append(Locations.ItemIndexAbsoluteUri(
+ context: context,
+ ss.SiteId) + "\n");
+ body.Append(
+ $"{Displays.Issues_Updator(context: context)}: ",
+ $"{context.User.Name}\n");
+ if (notification.AfterImport != false)
+ {
+ notification.Send(
+ context: context,
+ ss: ss,
+ title: Displays.Imported(
+ context: context,
+ data: new string[]
+ {
+ ss.Title,
+ insertCount.ToString(),
+ updateCount.ToString()
+ }),
+ body: body.ToString());
+ }
+ });
+ return ApiResults.Success(
+ id: context.Id,
+ limitPerDate: context.ContractSettings.ApiLimit(),
+ limitRemaining: context.ContractSettings.ApiLimit() - ss.ApiCount,
+ message: Messages.Imported(
+ context: context,
+ data: new string[]
+ {
+ ss.Title,
+ insertCount.ToString(),
+ updateCount.ToString()
+ }).Text);
+ }
+ else
+ {
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Messages.FileNotFound(context: context).Text));
+ }
+ }
+
public static string OpenExportSelectorDialog(
Context context, SiteSettings ss, SiteModel siteModel)
{
diff --git a/Implem.Pleasanter/Models/Items/ItemModel.cs b/Implem.Pleasanter/Models/Items/ItemModel.cs
index 67308d3c3..ffcb32065 100644
--- a/Implem.Pleasanter/Models/Items/ItemModel.cs
+++ b/Implem.Pleasanter/Models/Items/ItemModel.cs
@@ -211,6 +211,46 @@ public ContentResultInheritance ExportByApi(Context context)
return ApiResults.Get(ApiResponses.BadRequest(context: context));
}
+ public ContentResultInheritance ImportByApi(Context context)
+ {
+ SetSite(
+ context: context,
+ initSiteSettings: true,
+ setSiteIntegration: true,
+ setAllChoices: true);
+ if (!Site.WithinApiLimits(context: context))
+ {
+ return ApiResults.Get(ApiResponses.OverLimitApi(
+ context: context,
+ siteId: Site.SiteId,
+ limitPerSite: context.ContractSettings.ApiLimit()));
+ }
+ switch (Site.ReferenceType)
+ {
+ case "Issues":
+ if (SiteId == ReferenceId)
+ {
+ return IssueUtilities.ImportByApi(
+ context: context,
+ ss: Site.SiteSettings,
+ siteModel: Site);
+ }
+ break;
+ case "Results":
+ if (SiteId == ReferenceId)
+ {
+ return ResultUtilities.ImportByApi(
+ context: context,
+ ss: Site.SiteSettings,
+ siteModel: Site);
+ }
+ break;
+ default:
+ return ApiResults.Get(ApiResponses.BadRequest(context: context));
+ }
+ return ApiResults.Get(ApiResponses.BadRequest(context: context));
+ }
+
public string Index(Context context)
{
if (ReferenceId == 0)
diff --git a/Implem.Pleasanter/Models/Results/ResultUtilities.cs b/Implem.Pleasanter/Models/Results/ResultUtilities.cs
index c549b3c23..8b7757d80 100644
--- a/Implem.Pleasanter/Models/Results/ResultUtilities.cs
+++ b/Implem.Pleasanter/Models/Results/ResultUtilities.cs
@@ -6121,14 +6121,7 @@ public static string Import(Context context, SiteModel siteModel)
}
var invalidColumn = Imports.ColumnValidate(context, ss, columnHash.Values.Select(o => o.Column.ColumnName));
if (invalidColumn != null) return invalidColumn;
- Repository.ExecuteNonQuery(
- context: context,
- transactional: true,
- statements: new List()
- .OnImportingExtendedSqls(
- context: context,
- siteId: ss.SiteId)
- .ToArray());
+ ImportUtilities.SetOnImportingExtendedSqls(context, ss);
var resultHash = new Dictionary();
var importKeyColumnName = context.Forms.Data("Key");
var importKeyColumn = columnHash
@@ -6322,14 +6315,7 @@ public static string Import(Context context, SiteModel siteModel)
insertCount++;
}
}
- Repository.ExecuteNonQuery(
- context: context,
- transactional: true,
- statements: new List()
- .OnImportedExtendedSqls(
- context: context,
- siteId: ss.SiteId)
- .ToArray());
+ ImportUtilities.SetOnImportedExtendedSqls(context, ss);
ss.Notifications.ForEach(notification =>
{
var body = new System.Text.StringBuilder();
@@ -6374,6 +6360,324 @@ public static string Import(Context context, SiteModel siteModel)
}
}
+ public static ContentResultInheritance ImportByApi(
+ Context context,
+ SiteSettings ss,
+ SiteModel siteModel)
+ {
+ if (!Mime.ValidateOnApi(contentType: context.ContentType, multipart: true))
+ {
+ return ApiResults.BadRequest(context: context);
+ }
+ if (context.ContractSettings.Import == false)
+ {
+ return null;
+ }
+ var invalid = ResultValidators.OnImporting(
+ context: context,
+ ss: ss,
+ api: true);
+ switch (invalid.Type)
+ {
+ case Error.Types.None: break;
+ default:return ApiResults.Error(
+ context: context,
+ errorData: invalid);
+ }
+ var api = context.RequestDataString.Deserialize();
+ var updatableImport = api.UpdatableImport;
+ var encoding = api.Encoding;
+ var key = api.Key;
+ Csv csv;
+ try
+ {
+ csv = new Csv(
+ csv: context.PostedFiles.FirstOrDefault().Byte(),
+ encoding: encoding);
+ }
+ catch
+ {
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Messages.FailedReadFile(context: context).Text));
+ }
+ var count = csv.Rows.Count();
+ if (Parameters.General.ImportMax > 0 && Parameters.General.ImportMax < count)
+ {
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Error.Types.ImportMax.Message(
+ context: context,
+ data: Parameters.General.ImportMax.ToString()).Text));
+ }
+ if (context.ContractSettings.ItemsLimit(
+ context: context,
+ siteId: ss.SiteId,
+ number: count))
+ {
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Error.Types.ItemsLimit.Message(context: context).Text));
+ }
+ if (csv != null && count > 0)
+ {
+ var columnHash = ImportUtilities.GetColumnHash(ss, csv);
+ var idColumn = columnHash
+ .Where(o => o.Value.Column.ColumnName == "ResultId")
+ .Select(o => new { Id = o.Key })
+ .FirstOrDefault()?.Id ?? -1;
+ if (updatableImport && idColumn > -1)
+ {
+ var exists = ExistsLockedRecord(
+ context: context,
+ ss: ss,
+ targets: csv.Rows.Select(o => o[idColumn].ToLong()).ToList());
+ switch (exists.Type)
+ {
+ case Error.Types.None: break;
+ default: return ApiResults.Error(
+ context: context,
+ errorData: exists);
+ }
+ }
+ var invalidColumn = Imports.ColumnValidate(context, ss, columnHash.Values.Select(o => o.Column.ColumnName));
+ if (invalidColumn != null) return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: invalidColumn));
+ ImportUtilities.SetOnImportingExtendedSqls(context, ss);
+ var resultHash = new Dictionary();
+ var importKeyColumnName = key;
+ var importKeyColumn = columnHash
+ .FirstOrDefault(column => column.Value.Column.ColumnName == importKeyColumnName);
+ if (updatableImport && importKeyColumn.Value == null)
+ {
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Messages.NotContainKeyColumn(context: context).Text));
+ }
+ var csvRows = csv.Rows
+ .Select((o, i) => new { Index = i, Row = o })
+ .ToDictionary(o => o.Index, o => o.Row);
+ foreach (var data in csvRows)
+ {
+ var resultModel = new ResultModel(
+ context: context,
+ ss: ss);
+ if (updatableImport
+ && !data.Value[importKeyColumn.Key].IsNullOrEmpty())
+ {
+ var view = new View();
+ view.AddColumnFilterHash(
+ context: context,
+ ss: ss,
+ column: importKeyColumn.Value.Column,
+ objectValue: data.Value[importKeyColumn.Key]);
+ view.AddColumnFilterSearchTypes(
+ columnName: importKeyColumnName,
+ searchType: Column.SearchTypes.ExactMatch);
+ var model = new ResultModel(
+ context: context,
+ ss: ss,
+ resultId: 0,
+ view: view);
+ if (model.AccessStatus == Databases.AccessStatuses.Selected)
+ {
+ resultModel = model;
+ }
+ else if (model.AccessStatus == Databases.AccessStatuses.Overlap)
+ {
+ return ApiResults.Error(
+ context: context,
+ errorData: new ErrorData(
+ type: Error.Types.OverlapCsvImport,
+ data: new string[] {
+ (data.Key + 1).ToString(),
+ importKeyColumn.Value.Column.GridLabelText,
+ data.Value[importKeyColumn.Key]}));
+ }
+ }
+ resultModel.SetByCsvRow(
+ context: context,
+ ss: ss,
+ columnHash: columnHash,
+ row: data.Value);
+ resultHash.Add(data.Key, resultModel);
+ }
+ var inputErrorData = ResultValidators.OnInputValidating(
+ context: context,
+ ss: ss,
+ resultHash: resultHash).FirstOrDefault();
+ switch (inputErrorData.Type)
+ {
+ case Error.Types.None: break;
+ default: return ApiResults.Error(
+ context: context,
+ errorData: inputErrorData);
+ }
+ var insertCount = 0;
+ var updateCount = 0;
+ foreach (var data in resultHash)
+ {
+ var resultModel = data.Value;
+ if (resultModel.AccessStatus == Databases.AccessStatuses.Selected)
+ {
+ ErrorData errorData = null;
+ while (errorData?.Type != Error.Types.None)
+ {
+ switch (errorData?.Type)
+ {
+ case Error.Types.Duplicated:
+ var duplicatedColumn = ss.GetColumn(
+ context: context,
+ columnName: errorData.ColumnName);
+ return ApiResults.Duplicated(
+ context: context,
+ message: duplicatedColumn?.MessageWhenDuplicated.IsNullOrEmpty() != false
+ ? Displays.Duplicated(
+ context: context,
+ data: duplicatedColumn?.LabelText)
+ : duplicatedColumn?.MessageWhenDuplicated);
+ case null:
+ case Error.Types.UpdateConflicts:
+ resultModel = new ResultModel(
+ context: context,
+ ss: ss,
+ resultId: resultModel.ResultId);
+ var previousTitle = resultModel.Title.DisplayValue;
+ resultModel.SetByCsvRow(
+ context: context,
+ ss: ss,
+ columnHash: columnHash,
+ row: csvRows.Get(data.Key));
+ switch (resultModel.AccessStatus)
+ {
+ case Databases.AccessStatuses.Selected:
+ if (resultModel.Updated(context: context))
+ {
+ resultModel.VerUp = Versions.MustVerUp(
+ context: context,
+ ss: ss,
+ baseModel: resultModel);
+ errorData = resultModel.Update(
+ context: context,
+ ss: ss,
+ extendedSqls: false,
+ previousTitle: previousTitle,
+ get: false);
+ updateCount++;
+ }
+ else
+ {
+ errorData = new ErrorData(type: Error.Types.None);
+ }
+ break;
+ case Databases.AccessStatuses.NotFound:
+ resultModel.ResultId = 0;
+ resultModel.Ver = 1;
+ errorData = resultModel.Create(
+ context: context,
+ ss: ss,
+ extendedSqls: false);
+ insertCount++;
+ break;
+ default:
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Messages.UpdateConflicts(context: context).Text));
+ }
+ break;
+ default:
+ return ApiResults.Error(
+ context: context,
+ errorData: errorData);
+ }
+ }
+ }
+ else
+ {
+ resultModel.ResultId = 0;
+ resultModel.Ver = 1;
+ var errorData = resultModel.Create(
+ context: context,
+ ss: ss,
+ extendedSqls: false);
+ switch (errorData.Type)
+ {
+ case Error.Types.None:
+ break;
+ case Error.Types.Duplicated:
+ var duplicatedColumn = ss.GetColumn(
+ context: context,
+ columnName: errorData.ColumnName);
+ return ApiResults.Duplicated(
+ context: context,
+ message: duplicatedColumn?.MessageWhenDuplicated.IsNullOrEmpty() != false
+ ? Displays.Duplicated(
+ context: context,
+ data: duplicatedColumn?.LabelText)
+ : duplicatedColumn?.MessageWhenDuplicated);
+ default:
+ return ApiResults.Error(
+ context: context,
+ errorData: errorData);
+ }
+ insertCount++;
+ }
+ }
+ ImportUtilities.SetOnImportedExtendedSqls(context, ss);
+ ss.Notifications.ForEach(notification =>
+ {
+ var body = new System.Text.StringBuilder();
+ body.Append(Locations.ItemIndexAbsoluteUri(
+ context: context,
+ ss.SiteId) + "\n");
+ body.Append(
+ $"{Displays.Results_Updator(context: context)}: ",
+ $"{context.User.Name}\n");
+ if (notification.AfterImport != false)
+ {
+ notification.Send(
+ context: context,
+ ss: ss,
+ title: Displays.Imported(
+ context: context,
+ data: new string[]
+ {
+ ss.Title,
+ insertCount.ToString(),
+ updateCount.ToString()
+ }),
+ body: body.ToString());
+ }
+ });
+ return ApiResults.Success(
+ id: context.Id,
+ limitPerDate: context.ContractSettings.ApiLimit(),
+ limitRemaining: context.ContractSettings.ApiLimit() - ss.ApiCount,
+ message: Messages.Imported(
+ context: context,
+ data: new string[]
+ {
+ ss.Title,
+ insertCount.ToString(),
+ updateCount.ToString()
+ }).Text);
+ }
+ else
+ {
+ return ApiResults.Get(new ApiResponse(
+ id: context.Id,
+ statusCode: 500,
+ message: Messages.FileNotFound(context: context).Text));
+ }
+ }
+
public static string OpenExportSelectorDialog(
Context context, SiteSettings ss, SiteModel siteModel)
{
diff --git a/Implem.Pleasanter/wwwroot/content/responsive.css b/Implem.Pleasanter/wwwroot/content/responsive.css
index 18b46e9cb..5b1d8e0fd 100644
--- a/Implem.Pleasanter/wwwroot/content/responsive.css
+++ b/Implem.Pleasanter/wwwroot/content/responsive.css
@@ -62,11 +62,6 @@
margin: 10px 0px;
float: left;
}
- @media screen and (max-width: 600px) and (min-width: 0px) {
- #LoginFieldSet .field-wide {
- min-height: 10vw !important;
- }
- }
#StartGuide {
display: none;
}
@@ -74,7 +69,7 @@
word-break: break-all;
}
div[role="dialog"] {
- width: 100% !important;
+ width: 98% !important;
z-index: 999;
}
#EnterPriseBanner, #SupportBanner, #CasesBanner {
@@ -113,7 +108,10 @@
#ViewFilters>.field-auto-thin>.field-control { width: 100%;}
#ViewFilters>.field-auto-thin>.field-label { width: 30%; text-align: left;}
#ViewFilters>.field-auto-thin>.field-label+.field-control { width: 70%; }
- .ui-multiselect { width: 98%!important; height: 6vw; }
+ .ui-multiselect {
+ width: 100% !important;
+ height: 6vw;
+ }
.field-auto-thin input[type="checkbox"],
.field-auto-thin input[type="radio"] { height: 2.6vw; width: 2.6vw; margin-right: 1vw; }
@@ -156,8 +154,9 @@
.field-normal .control-text{ width: 100%; height: auto; padding: 1%; line-height: 1; }
.control-textbox { height: auto; }
-.ui-widget.ui-widget-content { background: #fff; font-size: 2.6vw; }
-
+.ui-widget.ui-widget-content {
+ font-size: 2.6vw;
+}
#Guide { font-size: 2.6vw; }
.alert-success,
@@ -171,14 +170,12 @@
.ui-tabs .ui-tabs-nav li {
margin-bottom: 1%;
padding-bottom: 0;
-border:1px solid #111;
-border-radius: 4px;
+ border-radius: 4px;
}
.ui-tabs .ui-tabs-nav li.ui-tabs-active {
margin-bottom: 1%;
padding-bottom: 0;
-border:1px solid #111;
-border-radius: 4px;
+ border-radius: 4px;
}
.message { bottom: 140px; }
}
@@ -188,7 +185,6 @@ border-radius: 4px;
body { min-width: 320px!important; }
#Header { height: auto; position: relative; }
- #Header #Logo { padding-bottom: 2%; }
#CorpLogo { float: none; width: 30%;}
#MainContainer { min-height: 100vh; }
@@ -239,16 +235,6 @@ transition: .5s;
background: none;
}
-#Header .ui-widget-header{
-background: #f3f3f3;
-color:#111;
-}
-
-.ui-widget-header{
-background: #817865;
-color:#fff;
-}
-
#NavigationMenu {
float: none;
margin-right: 0;
@@ -261,32 +247,28 @@ color:#fff;
color: #000;
}
-#NavigationMenu>li {
-width: 100%;
-height: auto;
-display: block;
-float: none;
-position: relative;
-color:#333;
-}
-
-#NavigationMenu>li>div {
-height: auto;
-text-align: left;
-line-height: 7vw;
-color: #333;
-font-weight: bold;
-}
-
-#NavigationMenu>li>div:hover { background:none;}
-
-#NavigationMenu>li>div>a {
-height: auto;
-display: block;
-color: #333;
-text-decoration: none;
-font-weight: bold;
-}
+ #NavigationMenu > li {
+ width: 100%;
+ height: auto;
+ display: block;
+ float: none;
+ position: relative;
+ }
+ #NavigationMenu > li > div {
+ height: auto;
+ text-align: left;
+ line-height: 7vw;
+ font-weight: bold;
+ }
+ #NavigationMenu > li > div:hover {
+ background: none;
+ }
+ #NavigationMenu > li > div > a {
+ height: auto;
+ display: block;
+ text-decoration: none;
+ font-weight: bold;
+ }
#NavigationMenu .menu {
width: 100%;
@@ -306,13 +288,6 @@ font-weight: normal;
text-decoration: none;
}
-.ui-widget.ui-widget-content {
-}
-
-.ui-widget-content {
-color: #333;
-}
-
.ui-menu .ui-menu-item {
border-top: 1px solid #d19405;
}
@@ -332,8 +307,6 @@ border: 1px solid #d19405;
width: 20vw;
height: 20vw;
text-align: center;
-background-color: white;
-border: solid 2px silver;
border-radius: 0.5vw;
float: none;
margin: 6%;
@@ -350,7 +323,6 @@ margin: 6%;
width: 20vw!important;
height: 20vw!important;
background: #fff;
-border: solid 2px #ffa500;
border-radius: 5px;}
@@ -358,8 +330,6 @@ border-radius: 5px;}
width: 8vw;
height: 3vw;
top: -3vw;
-background-color: #f8da4c;
-border: solid 2px #ffa500;
}
#SiteMenu .nav-site.sites.to-parent{
@@ -615,18 +585,1056 @@ overflow: hidden;
#KambanBody .grid>tbody td { min-width: 10vw; white-space: nowrap; }
}
-@media screen and (min-width: 981px) {
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Header {
+ padding: 0 calc(5vw);
+ }
+ #Header a#navtgl {
+ right: 5vw;
+ }
+ #Application,
+ #Footer {
+ padding-left: 5vw;
+ padding-right: 5vw;
+ }
+ #SiteMenu .nav-site {
+ margin: 5%;
+ }
+ :not(td) > div.field-control .container-normal {
+ margin-left: 0;
+ }
+ * {
+ line-height: 1.4;
+ }
+ .field-normal .control-textbox,
+ .field-normal .control-dropdown,
+ .field-normal .control-text, .field-control .control-textbox,
+ .field-control .control-dropdown,
+ .field-control .control-text, .container-normal .control-textbox,
+ .container-normal .control-dropdown,
+ .container-normal .control-text {
+ min-height: unset;
+ height: 6vw;
+ line-height: 6vw;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+ body {
+ font-size: 16px;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #HeaderTitle {
+ font-size: 16px;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ .command-center {
+ padding: 0;
+ }
+ .ui-dialog .ui-dialog-titlebar-close {
+ top: 0;
+ bottom: 0;
+ width: 5vw;
+ height: 5vw;
+ margin: auto 0;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewSelector {
+ font-size: 2.6vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Logo a {
+ align-items: center;
+ display: flex;
+ }
+ #Logo #ProductLogo {
+ font-size: 18px;
+ padding-left: 8px;
+ }
+ #CorpLogo {
+ float: none;
+ height: calc(8vw + 10px);
+ width: unset;
+ margin-top: 0;
+ }
+}
-.grid>thead>tr:first-child>th:first-child {width: 20px;}
-#CrosstabBody .grid>thead>tr:first-child>th:first-child,
-#KambanBody .grid>thead>tr:first-child>th:first-child {width: auto;}
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Editor .field-control .container-normal {
+ width: calc(100% - 20px);
+ }
+ #Editor .field-control .ui-icon.ui-icon-clock.current-time {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjEycHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjwvZz48Zz48Zz48Zz48cGF0aCBkPSJNMTIsMkM2LjUsMiwyLDYuNSwyLDEyczQuNSwxMCwxMCwxMHMxMC00LjUsMTAtMTBTMTcuNSwyLDEyLDJ6IE0xNi4yLDE2LjJMMTEsMTNWN2gxLjV2NS4ybDQuNSwyLjdMMTYuMiwxNi4yeiIvPjwvZz48L2c+PC9nPjwvc3ZnPg==");
+ background-position: center;
+ width: 12px;
+ height: 12px;
+ filter: invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);
+ top: calc(3vw - 3.5px);
+ right: -16px;
+ }
+ #Editor .field-control .ui-icon.ui-icon-person.current-user {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTJweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTJweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMiAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAgMmMtMi42NyAwLTggMS4zNC04IDR2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHoiLz48L3N2Zz4=");
+ background-position: center;
+ width: 12px;
+ height: 12px;
+ filter: invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);
+ top: calc(3vw - 3.5px);
+ right: -16px;
+ }
+}
-.grid>thead>tr:first-child>th:not(:first-child) { white-space: nowrap; }
-#CrosstabBody .grid>thead>tr:first-child>th:not(:first-child),
-#KambanBody .grid>thead>tr:first-child>th:not(:first-child) { white-space: inherit; }
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #FieldSetAddressBook #OutgoingMailDestinationForm .container-left {
+ width: 38vw;
+ }
+ #FieldSetAddressBook #OutgoingMailDestinationForm .container-right .command-left {
+ float: unset;
+ padding: 0;
+ }
+ #FieldSetAddressBook #OutgoingMailDestinationForm .container-right .command-left button {
+ margin: 2px;
+ }
+ #FieldSetAddressBook #OutgoingMailDestinationForm .container-right .container-selectable .wrapper {
+ height: 40vw;
+ }
+ #FieldSetAddressBook #OutgoingMailDestinationForm .container-right > * {
+ margin-left: 40vw;
+ }
+}
-.grid>tbody>tr td:not(:first-child) {white-space: nowrap; min-width: 40px;}
-#CrosstabBody .grid>tbody>tr td:not(:first-child),
-#KambanBody .grid>tbody>tr td:not(:first-child) { white-space: inherit; min-width:auto; }
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Issues_WorkValue {
+ width: 100px;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ body::before {
+ content: '';
+ position: fixed;
+ width: 5vw;
+ height: 50vh;
+ top: 0;
+ left: 0;
+ background: white;
+ z-index: 200;
+ }
+ body::after {
+ content: '';
+ position: fixed;
+ width: 5vw;
+ height: 50vh;
+ top: 0;
+ right: 0;
+ background: white;
+ z-index: 700;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Users_LoginId,
+ #Users_Password {
+ height: 40px;
+ }
+ #LoginMessage span {
+ font-size: 3.5vw;
+ }
+ #PortalLink {
+ font-size: 3.5vw;
+ top: 3vw;
+ }
+ #LoginFieldSet {
+ margin: 65px auto 20px auto;
+ }
+ #LoginFieldSet input[type=checkbox] {
+ margin: auto 0;
+ margin-left: 1.2vw;
+ }
+ #LoginFieldSet button {
+ margin-top: 0;
+ }
+ #LoginFieldSet .field-wide,
+ #LoginFieldSet .field-normal {
+ margin: 0px 0px;
+ }
+ #LoginFieldSet .field-normal .control-checkbox + label {
+ margin: auto 0;
+ margin-left: 4vw;
+ padding: 0;
+ }
+ #Logins .field-label {
+ width: 100%;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Editor .field-markdown > .field-label > label {
+ font-weight: bold;
+ }
+ #Editor .field-control .unit {
+ font-size: 2.6vw;
+ padding-top: calc((18px - 1.4em) / 2);
+ }
+ #Editor .ui-spinner .control-spinner {
+ height: 100%;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #GridCheckAll {
+ margin-top: 0;
+ }
+ label[for="GridCheckAll"] {
+ margin: 0;
+ }
+ #Footer {
+ font-size: 2.8vw;
+ height: auto;
+ }
+ #MainCommandsContainer {
+ bottom: calc(2.8vw * 1.4 + 10px);
+ }
+ body > thead > tr {
+ font-size: 0.75em;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #SiteImageSettingsEditor .field-auto-thin, #GridSettingsEditor .field-auto-thin, #FiltersSettingsEditor .field-auto-thin, #EditorSettingsEditor .field-auto-thin,
+ #LinksSettingsEditor .field-auto-thin, #HistoriesSettingsEditor .field-auto-thin, #FormulasSettingsEditor .field-auto-thin, #ViewsSettingsEditor .field-auto-thin,
+ #ImportsSettingsEditor .field-auto-thin, #ExportsSettingsEditor .field-auto-thin, #CalendarSettingsEditor .field-auto-thin, #CrosstabSettingsEditor .field-auto-thin,
+ #GanttSettingsEditor .field-auto-thin, #BurnDownSettingsEditor .field-auto-thin, #TimeSeriesSettingsEditor .field-auto-thin, #KambanSettingsEditor .field-auto-thin,
+ #ImageLibSettingsEditor .field-auto-thin, #SearchSettingsEditor .field-auto-thin, #StylesSettingsEditor .field-auto-thin, #ScriptsSettingsEditor .field-auto-thin,
+ #PublishSettingsEditor .field-auto-thin, #FieldSetSiteAccessControl .field-auto-thin {
+ padding-right: 0;
+ height: auto;
+ display: flex;
+ align-items: center;
+ clear: both;
+ }
+ #SiteImageSettingsEditor .field-auto-thin .container-normal, #GridSettingsEditor .field-auto-thin .container-normal, #FiltersSettingsEditor .field-auto-thin .container-normal, #EditorSettingsEditor .field-auto-thin .container-normal,
+ #LinksSettingsEditor .field-auto-thin .container-normal, #HistoriesSettingsEditor .field-auto-thin .container-normal, #FormulasSettingsEditor .field-auto-thin .container-normal, #ViewsSettingsEditor .field-auto-thin .container-normal,
+ #ImportsSettingsEditor .field-auto-thin .container-normal, #ExportsSettingsEditor .field-auto-thin .container-normal, #CalendarSettingsEditor .field-auto-thin .container-normal, #CrosstabSettingsEditor .field-auto-thin .container-normal,
+ #GanttSettingsEditor .field-auto-thin .container-normal, #BurnDownSettingsEditor .field-auto-thin .container-normal, #TimeSeriesSettingsEditor .field-auto-thin .container-normal, #KambanSettingsEditor .field-auto-thin .container-normal,
+ #ImageLibSettingsEditor .field-auto-thin .container-normal, #SearchSettingsEditor .field-auto-thin .container-normal, #StylesSettingsEditor .field-auto-thin .container-normal, #ScriptsSettingsEditor .field-auto-thin .container-normal,
+ #PublishSettingsEditor .field-auto-thin .container-normal, #FieldSetSiteAccessControl .field-auto-thin .container-normal {
+ width: 100%;
+ }
+ #SiteImageSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #GridSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #FiltersSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #EditorSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label,
+ #LinksSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #HistoriesSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #FormulasSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #ViewsSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label,
+ #ImportsSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #ExportsSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #CalendarSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #CrosstabSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label,
+ #GanttSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #BurnDownSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #TimeSeriesSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #KambanSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label,
+ #ImageLibSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #SearchSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #StylesSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #ScriptsSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label,
+ #PublishSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #FieldSetSiteAccessControl .field-auto-thin .container-normal .control-checkbox ~ label {
+ display: unset;
+ float: unset;
+ width: auto;
+ }
+ #SiteImageSettingsEditor .field-auto-thin .field-label ~ .field-control, #GridSettingsEditor .field-auto-thin .field-label ~ .field-control, #FiltersSettingsEditor .field-auto-thin .field-label ~ .field-control, #EditorSettingsEditor .field-auto-thin .field-label ~ .field-control,
+ #LinksSettingsEditor .field-auto-thin .field-label ~ .field-control, #HistoriesSettingsEditor .field-auto-thin .field-label ~ .field-control, #FormulasSettingsEditor .field-auto-thin .field-label ~ .field-control, #ViewsSettingsEditor .field-auto-thin .field-label ~ .field-control,
+ #ImportsSettingsEditor .field-auto-thin .field-label ~ .field-control, #ExportsSettingsEditor .field-auto-thin .field-label ~ .field-control, #CalendarSettingsEditor .field-auto-thin .field-label ~ .field-control, #CrosstabSettingsEditor .field-auto-thin .field-label ~ .field-control,
+ #GanttSettingsEditor .field-auto-thin .field-label ~ .field-control, #BurnDownSettingsEditor .field-auto-thin .field-label ~ .field-control, #TimeSeriesSettingsEditor .field-auto-thin .field-label ~ .field-control, #KambanSettingsEditor .field-auto-thin .field-label ~ .field-control,
+ #ImageLibSettingsEditor .field-auto-thin .field-label ~ .field-control, #SearchSettingsEditor .field-auto-thin .field-label ~ .field-control, #StylesSettingsEditor .field-auto-thin .field-label ~ .field-control, #ScriptsSettingsEditor .field-auto-thin .field-label ~ .field-control,
+ #PublishSettingsEditor .field-auto-thin .field-label ~ .field-control, #FieldSetSiteAccessControl .field-auto-thin .field-label ~ .field-control {
+ margin-left: 10px;
+ }
+ #SiteImageSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #GridSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #FiltersSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #EditorSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal,
+ #LinksSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #HistoriesSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #FormulasSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #ViewsSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal,
+ #ImportsSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #ExportsSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #CalendarSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #CrosstabSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal,
+ #GanttSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #BurnDownSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #TimeSeriesSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #KambanSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal,
+ #ImageLibSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #SearchSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #StylesSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #ScriptsSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal,
+ #PublishSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #FieldSetSiteAccessControl .field-auto-thin .field-label ~ .field-control .container-normal {
+ width: 100%;
+ }
+ #FieldSetGeneral .field-control .container-normal .control-checkbox ~ label {
+ width: auto;
+ }
+ #GridSettingsEditor #GridEditorType {
+ max-width: unset;
+ }
+ #SiteImageSettingsEditor #SiteImage {
+ width: 100%;
+ height: 7vw;
+ }
+ #SiteImageSettingsEditor #SetSiteImage {
+ margin-right: 0;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Aggregations {
+ display: flex;
+ flex-wrap: wrap;
+ row-gap: 5px;
+ justify-content: flex-start;
+ align-items: center;
+ }
+ #Aggregations span.label {
+ flex: 1 0 auto;
+ margin: 0;
+ text-align: center;
+ align-self: stretch;
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+ }
+ #Aggregations span.data {
+ flex: 1 0 auto;
+ margin: 0;
+ align-self: stretch;
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+ height: auto;
+ }
+ #Aggregations span.data.no-choice {
+ flex-basis: auto;
+ align-self: stretch;
+ }
+ #Aggregations span.data.link span {
+ font-weight: bold;
+ }
+ #Aggregations #ReduceAggregations {
+ width: 100%;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewModeContainer .grid {
+ vertical-align: middle;
+ }
+ #ViewModeContainer .grid tr td:first-child {
+ padding: 6px;
+ }
+ input[type='checkbox'], .field-auto-thin input[type='checkbox'] {
+ width: 3vw;
+ height: 3vw;
+ }
+ .field-auto-thin input[type='checkbox'] + label {
+ padding-top: 2px;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #SearchField #Search {
+ font-size: 3vw;
+ width: 100%;
+ }
+ #SearchField #Search::placeholder {
+ font-size: 3vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewFilters #ViewFilters_Reset {
+ margin-left: auto;
+ margin-right: 0;
+ }
+ #ViewFilters .field-auto-thin {
+ width: 50%;
+ }
+ #ViewFilters .field-auto-thin .field-control .container-normal {
+ display: flex;
+ align-items: center;
+ }
+ #ViewFilters .field-auto-thin .field-control .container-normal input[type='checkbox'] {
+ margin-right: 4px;
+ margin-top: 1px;
+ }
+ #ViewFilters .field-auto-thin .field-control .container-normal .ui-widget.ui-state-default.ui-multiselect, #ViewFilters .field-auto-thin .field-control .container-normal .control-textbox {
+ height: 6vw;
+ font-size: 2.6vw;
+ }
+ #ViewFilters #ViewFilters_SearchField {
+ width: 100%;
+ }
+ #ViewFilters #ViewFilters_SearchField p.field-label {
+ width: 17%;
+ }
+ #ViewFilters #ViewFilters_SearchField .field-control {
+ width: 100%;
+ }
+ #ViewFilters > .field-auto-thin:nth-child(odd) {
+ padding-right: 2px;
+ }
+ #ViewFilters > .field-auto-thin:nth-child(even) {
+ padding-left: 2px;
+ }
+ .ui-multiselect-menu .ui-helper-reset {
+ position: relative;
+ }
+ .ui-multiselect-menu .ui-helper-reset li {
+ width: 100%;
+ }
+ .ui-multiselect-menu .ui-helper-reset li > label span {
+ position: relative;
+ top: -4px;
+ }
+ .ui-multiselect-menu .ui-helper-reset li .ui-multiselect-all,
+ .ui-multiselect-menu .ui-helper-reset li .ui-multiselect-none {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ }
+ .ui-multiselect-menu .ui-helper-reset li .ui-multiselect-all span:last-child,
+ .ui-multiselect-menu .ui-helper-reset li .ui-multiselect-none span:last-child {
+ padding-left: 10px;
+ }
+ .ui-multiselect-menu .ui-helper-reset li .ui-multiselect-close {
+ position: absolute;
+ top: 8px;
+ right: 0;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #EditorTabsContainer .legend.applied {
+ display: flex;
+ align-items: center;
+ font-weight: bold;
+ }
+ #EditorTabsContainer #PermissionEditor .field-vertical:first-child > .field-control {
+ border-bottom: 1px solid #d19405;
+ padding-bottom: 2vw;
+ }
+ #EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left {
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ width: 100%;
+ }
+ #EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left #SearchPermissionElements {
+ margin: 2px 1vw 2px 6vw;
+ height: 7vw;
+ }
+ #EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left button {
+ align-self: stretch;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ white-space: nowrap;
+ }
+ #EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left button .ui-icon {
+ position: relative;
+ top: 0.5vw;
+ width: 18px;
+ height: 18px;
+ margin-right: 0px;
+ }
+ #EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left #OpenPermissionsDialog,
+ #EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left #DeletePermissions {
+ line-height: 1.5;
+ }
+ #EditorTabsContainer #PermissionEditor .field-control .container-selectable #CurrentPermissionsWrapper {
+ min-height: 15vw;
+ }
+}
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ thead > tr.ui-widget-header th div > span {
+ font-size: 2.8vw;
+ white-space: nowrap;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #EditorTabsContainer .field-control .container-normal .ui-icon.ui-icon-pencil.button-edit-markdown {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTJweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTJweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6Ii8+PC9zdmc+");
+ background-position: center;
+ width: 12px;
+ height: 12px;
+ filter: invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);
+ top: 8px;
+ right: 4px;
+ }
+ #EditorTabsContainer .field-control .container-normal .ui-icon.ui-icon-image.button-upload-image {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTJweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTJweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMSAxOVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMy41bDIuNSAzLjAxTDE0LjUgMTJsNC41IDZINWwzLjUtNC41eiIvPjwvc3ZnPg==");
+ background-position: center;
+ width: 12px;
+ height: 12px;
+ filter: invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);
+ position: relative;
+ left: -1px;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #EditorTabsContainer {
+ overflow: auto;
+ }
+ #EditorComments {
+ padding: 0;
+ margin: 0;
+ }
+ #EditorComments #CommentField .control-textarea {
+ height: 15vw;
+ }
+ #EditorComments #CommentField .control-textarea::placeholder {
+ font-size: 2.6vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ .is-showMenu {
+ overflow: hidden;
+ }
+ .is-showMenu body {
+ position: fixed;
+ overflow: hidden;
+ }
+ .bg-overlay {
+ background: rgba(0, 0, 0, 0.5);
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 301;
+ width: 100%;
+ height: 100%;
+ display: none;
+ }
+ #MainContainer {
+ overflow: hidden;
+ }
+ header#Header {
+ position: fixed;
+ top: 0;
+ z-index: 1000;
+ background-color: #fff;
+ transition: all 0.5s ease;
+ }
+ header#Header a#navtgl {
+ top: 8px;
+ z-index: 1000;
+ transition: all 0.5s ease;
+ }
+ header#Header a#navtgl::after {
+ transition: all 0.5s ease;
+ }
+ header#Header a#navtgl.on {
+ transition: all 0.5s ease;
+ position: fixed;
+ }
+ header#Header a#navtgl.on::before {
+ transition: all 0.5s ease;
+ border-top: none;
+ transform: translate(12.5%, 50%) rotate(50deg);
+ }
+ header#Header a#navtgl.on::after {
+ transition: all 0.5s ease;
+ transform: translate(12.5%, 0%) rotate(126deg);
+ }
+ #Navigations {
+ transition: all 0.5s ease;
+ max-height: 100vh;
+ height: 100vh;
+ position: absolute;
+ top: 0;
+ right: -1000px;
+ z-index: 999;
+ padding: 5%;
+ width: 70%;
+ padding-top: 112px;
+ opacity: 0;
+ }
+ #Navigations.open {
+ opacity: 1;
+ padding-top: 112px;
+ right: 0;
+ height: 100vh;
+ margin: 0;
+ position: fixed;
+ top: 0;
+ z-index: 1000;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #OutgoingMailsForm {
+ width: 100%;
+ font-size: 2.6vw;
+ }
+ #OutgoingMailsForm .item h3.title-header {
+ height: auto;
+ }
+ #OutgoingMailsForm .item .content {
+ padding: 0.2em;
+ margin: 0;
+ }
+ #OutgoingMailsForm .item .content .field-auto,
+ #OutgoingMailsForm .item .content .field-auto-thin {
+ width: 100%;
+ margin-right: 0;
+ padding-right: 0;
+ padding-bottom: 0;
+ display: flex;
+ flex-direction: column;
+ height: auto;
+ }
+ #OutgoingMailsForm .item .content .field-auto .field-label,
+ #OutgoingMailsForm .item .content .field-auto-thin .field-label {
+ float: none;
+ padding: 7px 7px 7px 0;
+ width: 100%;
+ text-align: left;
+ display: block;
+ }
+ #OutgoingMailsForm .item .content .field-auto .field-label label,
+ #OutgoingMailsForm .item .content .field-auto-thin .field-label label {
+ font-weight: bold;
+ }
+ #OutgoingMailsForm .item .content .field-auto .field-control,
+ #OutgoingMailsForm .item .content .field-auto-thin .field-control {
+ float: none;
+ width: 100%;
+ }
+ #OutgoingMailsForm .item .content .field-auto .field-control .container-normal,
+ #OutgoingMailsForm .item .content .field-auto-thin .field-control .container-normal {
+ margin-right: 0;
+ width: 100%;
+ }
+ #OutgoingMailsForm .item .content .field-auto .field-control .container-normal .control-text,
+ #OutgoingMailsForm .item .content .field-auto-thin .field-control .container-normal .control-text {
+ min-height: 0;
+ height: auto;
+ }
+ #OutgoingMailsForm .item .content .field-auto-thin {
+ margin-left: 0;
+ }
+ #OutgoingMailsForm .item .content .field-wide {
+ display: flex;
+ flex-direction: column;
+ padding: 0;
+ }
+ #OutgoingMailsForm .item .content .field-wide .field-label {
+ padding: 7px 0;
+ }
+ #OutgoingMailsForm .item .content .field-wide .field-control .container-normal {
+ margin-right: 0;
+ width: 100%;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #SiteMenu li.ui-sortable-handle {
+ touch-action: unset;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ .message .close {
+ top: unset;
+ bottom: calc(50% - 8px);
+ margin: auto;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #EditorComments #CommentField .ui-icon.ui-icon-image.button-upload-image {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTJweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTJweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMSAxOVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMy41bDIuNSAzLjAxTDE0LjUgMTJsNC41IDZINWwzLjUtNC41eiIvPjwvc3ZnPg==");
+ background-position: center;
+ width: 12px;
+ height: 12px;
+ filter: invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);
+ position: relative;
+ left: 0px;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Navigations.open {
+ overflow-y: scroll;
+ }
+ #Navigations #NavigationMenu #NewMenuContainer {
+ background: unset;
+ border: none;
+ }
+ #Navigations #NavigationMenu #NewMenuContainer a {
+ line-height: 7vw;
+ }
+ #Navigations #NavigationMenu li.sub-menu .ui-menu-item .ui-menu-item-wrapper {
+ font-size: 3vw;
+ padding-left: 6vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Editor .field-normal .field-control .container-normal input[type='checkbox'].control-checkbox {
+ position: relative;
+ margin-right: 6px;
+ margin-top: .3vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Editor #EditorTabsContainer .field-normal, #Editor #EditorTabsContainer .field-wide, #Editor #EditorTabsContainer .field-markdown {
+ display: inline-block;
+ margin-top: 8px;
+ padding-bottom: 0;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewModeContainer #Calendar.both select {
+ font-size: 2.6vw;
+ }
+ #ViewModeContainer #Calendar.both .field-label {
+ min-width: 30%;
+ margin-right: 15px;
+ }
+ #ViewModeContainer #Calendar.both .field-auto-thin .field-control .container-normal {
+ display: flex;
+ align-items: center;
+ }
+ #ViewModeContainer #Calendar.both .field-auto-thin:nth-child(3) {
+ flex: 0 1 calc(64%);
+ }
+ #ViewModeContainer #Calendar.both .field-auto-thin:nth-child(3) .field-label {
+ min-width: 22%;
+ }
+ #ViewModeContainer #Calendar.both .field-auto-thin:nth-child(3) .field-control {
+ width: 74%;
+ }
+ #ViewModeContainer #Calendar.both .field-auto-thin:nth-child(4) {
+ flex: 0 1 calc(33% + 1px);
+ padding-top: 2%;
+ }
+ #ViewModeContainer #Calendar.both .field-auto-thin:nth-child(4) .field-control .container-normal {
+ justify-content: flex-end;
+ }
+ #ViewModeContainer #Calendar.both .field-auto-thin:nth-child(4) .field-control .container-normal #CalendarDate {
+ margin-right: 0;
+ width: 98%;
+ font-size: 2.6vw;
+ }
+ #ViewModeContainer #Calendar.both button {
+ flex: 1 0 calc((100% / 3) - 32px);
+ margin: 2% 10px 2% 10px;
+ }
+ #ViewModeContainer .grid.fixed {
+ width: 100%;
+ }
+ #ViewModeContainer .grid.fixed tbody tr td.container .item {
+ touch-action: auto;
+ min-height: 50px;
+ }
+ #ViewModeContainer .grid.fixed tbody tr td.container .item .title .ui-icon.ui-icon-pencil {
+ margin-right: 5px;
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMzBweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMzBweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6Ii8+PC9zdmc+");
+ background-position: center;
+ width: 36px;
+ height: 36px;
+ filter: invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);
+ }
+ #ViewModeContainer .grid.fixed tbody tr td.container .item .connection {
+ min-height: 50px;
+ }
+ #ViewModeContainer .grid.fixed tbody tr td.container .dummy {
+ height: 50px;
+ }
+ #ViewModeContainer .grid.fixed tbody tr td.container:first-child .item {
+ margin-top: 0;
+ margin-bottom: 5px;
+ }
+ #ViewModeContainer .grid.fixed tbody tr td.container:not(:first-child) .item {
+ margin-top: 5px;
+ }
+ thead th.calendar-header {
+ overflow-x: hidden;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewModeContainer .both {
+ column-gap: 16px;
+ }
+ #ViewModeContainer .both .field-auto-thin:first-child, #ViewModeContainer .both .field-auto-thin:nth-child(2) {
+ flex: 0 1 calc(50% - 8px);
+ }
+ #ViewModeContainer .both .field-auto-thin:first-child .field-control, #ViewModeContainer .both .field-auto-thin:nth-child(2) .field-control {
+ flex: 1;
+ }
+ #ViewModeContainer .both .field-auto-thin:first-child .field-control select, #ViewModeContainer .both .field-auto-thin:nth-child(2) .field-control select {
+ max-width: 100%;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(3) {
+ row-gap: 12px;
+ flex-wrap: wrap;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(3) .field-label {
+ min-width: 15%;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(3) .field-auto-thin {
+ display: flex;
+ align-items: center;
+ flex: 1 0 100%;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(3) .field-auto-thin #GanttStartDate {
+ width: 100%;
+ font-size: 2.6vw;
+ margin-right: 0;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(3) button {
+ flex: 1;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(3) button:last-child {
+ margin-right: 8px;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(4) {
+ width: 100%;
+ padding-top: 12px;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(4) .field-control {
+ width: 100%;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(4) .field-control .container-normal {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ column-gap: 32px;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(4) .field-control .container-normal #GanttPeriod\,ui {
+ width: 99%;
+ margin-top: 0;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(4) .field-control .container-normal #GanttPeriod {
+ margin: 0;
+ }
+ #GanttBody {
+ max-height: 70vh;
+ }
+ #GanttBody text {
+ font-size: 2.6vw;
+ }
+ #GanttBody .title text.summary {
+ font-size: 3vw;
+ }
+ #GanttBody #GanttAxis {
+ left: auto;
+ position: sticky;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewModeContainer #Kamban.both .field-auto-thin select {
+ font-size: 2.6vw;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(1), #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(2), #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(3), #ViewModeContainer #Kamban.both .field-auto-thin#KambanValueField {
+ width: 100%;
+ flex: 0 1 calc(50% - 8px);
+ flex-wrap: wrap;
+ display: flex;
+ row-gap: 0;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(1) .field-label, #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(2) .field-label, #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(3) .field-label, #ViewModeContainer #Kamban.both .field-auto-thin#KambanValueField .field-label {
+ width: 100%;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(1) select, #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(2) select, #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(3) select, #ViewModeContainer #Kamban.both .field-auto-thin#KambanValueField select {
+ max-width: 100%;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(3) {
+ padding-top: 4%;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin#KambanValueField {
+ padding-top: 4%;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(5) {
+ display: block;
+ width: 100%;
+ padding-top: 4%;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(5) .field-label {
+ min-width: 50%;
+ margin-right: 10px;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(5) select {
+ max-width: 100%;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(6), #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(7) {
+ width: calc(50% - 8px);
+ padding-top: 4%;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(6) .container-normal, #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(7) .container-normal {
+ display: flex;
+ align-items: center;
+ }
+ #ViewModeContainer #Kamban.both #KambanBody #Grid tbody .kamban-row .kamban-container .kamban-item {
+ overflow: hidden;
+ padding: 6px 30px 6px 5px;
+ white-space: pre-line;
+ touch-action: auto;
+ display: -webkit-box;
+ -webkit-line-clamp: 1;
+ -webkit-box-orient: vertical;
+ }
+ #ViewModeContainer #Kamban.both #KambanBody #Grid tbody .kamban-row .kamban-container .kamban-item .ui-icon.ui-icon-pencil {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTJweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTJweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTMgMTcuNDZ2My4wNGMwIC4yOC4yMi41LjUuNWgzLjA0Yy4xMyAwIC4yNi0uMDUuMzUtLjE1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzLjE1IDE3LjFjLS4xLjEtLjE1LjIyLS4xNS4zNnpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz48L3N2Zz4=");
+ background-position: center;
+ width: 36px;
+ height: 36px;
+ filter: invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);
+ margin-right: 0;
+ top: -7px;
+ right: -11px;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #RecordSwitchers {
+ display: flex;
+ align-items: center;
+ }
+ #RecordSwitchers #CurrentIndex {
+ height: 7.5vw;
+ display: flex;
+ align-items: center;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0) {
+ #Editor #RecordHeader .user {
+ display: flex;
+ align-items: center;
+ }
+ #Editor #RecordHeader .user .ui-icon-person {
+ margin-right: 0.6vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #OutgoingMailDialog .field-wide {
+ padding-bottom: 5px;
+ }
+ #OutgoingMailDialog .field-wide .field-label {
+ width: auto;
+ }
+ #OutgoingMailDialog .field-wide .field-control {
+ float: none;
+ }
+ #OutgoingMailDialog .field-wide .control-basket,
+ #OutgoingMailDialog .field-wide .container-normal {
+ margin-left: 15vw;
+ }
+ #OutgoingMailDialog textarea {
+ height: 20vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ .show-password {
+ top: calc(50% - 10px);
+ right: 10px;
+ }
+ #LoginFieldSet input[type=checkbox] {
+ transform: scale(1.2);
+ }
+ #LoginFieldSet input,
+ #LoginFieldSet select {
+ font-size: 4vw;
+ }
+ #Users_RememberMeField .container-normal {
+ display: flex;
+ align-items: center;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Navigations.open {
+ padding-top: 18vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewModeContainer .field-auto-thin > .field-label {
+ padding: 7px 2vw 7px 0;
+ }
+ #CrosstabValueField .field-control {
+ width: 70%;
+ }
+ #Crosstab .field-auto-thin p {
+ margin-right: 0%;
+ }
+ #ViewModeContainer #Crosstab .field-auto-thin {
+ width: 100%;
+ flex: 0 1 calc(100%);
+ padding-top: 1vw;
+ }
+ #ViewModeContainer #Crosstab .field-auto-thin .field-label {
+ width: 30%;
+ }
+ #ViewModeContainer #Crosstab .field-auto-thin .field-control {
+ width: 70%;
+ }
+ #ViewModeContainer #Crosstab .field-auto-thin .field-control input[type='checkbox'],
+ #ViewModeContainer #Crosstab .field-auto-thin .field-control .field-auto-thin input[type='checkbox'] {
+ width: 4vw;
+ height: 4vw;
+ margin-left: 2px;
+ }
+ #CrosstabBody .grid > thead > tr:first-child > th:not(:first-child),
+ #KambanBody .grid > thead > tr:first-child > th:not(:first-child) {
+ white-space: nowrap;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ImportSettingsDialog .control-checkbox + label {
+ margin: 1.8vw 0 0 1vw;
+ }
+ #ImportSettingsDialog .control-checkbox {
+ margin: 2vw 0 2vw 2px;
+ }
+ #ImportSettingsDialog .control-textbox {
+ height: 7vw;
+ line-height: 6.5vw;
+ }
+ #ImportSettingsDialog .command-center {
+ padding: 2vw 0;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ExportSelectorDialog .command-center {
+ padding: 2vw 0;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewModeContainer #Grid .datepicker {
+ width: 35vw;
+ font-size: 4vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewModeContainer .both #TimeSeriesValueField,
+ #ViewModeContainer .both #TimeSeriesChartTypeField,
+ #ViewModeContainer .both #TimeSeriesHorizontalAxisField {
+ width: 100%;
+ }
+ #ViewModeContainer .both #TimeSeriesValueField .field-label,
+ #ViewModeContainer .both #TimeSeriesChartTypeField .field-label,
+ #ViewModeContainer .both #TimeSeriesHorizontalAxisField .field-label {
+ min-width: 30%;
+ }
+ #ViewModeContainer .both .field-auto-thin:first-child,
+ #ViewModeContainer .both .field-auto-thin:nth-child(2) {
+ flex: 0 1 calc(100%);
+ }
+ #ViewModeContainer .both .field-auto-thin:first-child .field-label,
+ #ViewModeContainer .both .field-auto-thin:nth-child(2) .field-label {
+ min-width: 30%;
+ }
+ #ViewModeContainer .both .field-auto-thin select {
+ max-width: 100%;
+ }
+ #ViewModeContainer .both .field-auto-thin > .field-control {
+ min-width: 68%;
+ }
}
\ No newline at end of file
diff --git a/Implem.Pleasanter/wwwroot/content/responsive.min.css b/Implem.Pleasanter/wwwroot/content/responsive.min.css
index 7376014e9..88f929d1f 100644
--- a/Implem.Pleasanter/wwwroot/content/responsive.min.css
+++ b/Implem.Pleasanter/wwwroot/content/responsive.min.css
@@ -1 +1 @@
-@media screen and (max-width:980px) and (min-width:0){#LoginFieldSet{width:100%;padding:10px;font-size:4vw}#LoginFieldSet input,#LoginFieldSet select{font-size:5vw;padding:10px}#LoginFieldSet input[type=checkbox]{transform:scale(2);margin:20px 0 0 10px}#LoginFieldSet button{font-size:4vw}#LoginFieldSet .container-normal{margin-left:0}#LoginFieldSet .field-wide,#LoginFieldSet .field-normal{width:100%;margin:10px 0;float:left}#LoginFieldSet .field-normal .control-checkbox+label{width:auto;margin:0 0 0 30px}#Logins .field-label{width:auto;padding:4px}#LoginMessage{width:100%}#Demo{width:100%;padding:10px;font-size:4vw}#DemoFields .field-label{width:auto;padding:4px}#DemoFields input{font-size:5vw;padding:10px}#DemoFields button{font-size:4vw;float:right;margin-top:10px}#DemoFields .container-normal{margin-left:0}#DemoFields .field-normal{width:100%;margin:10px 0;float:left}@media screen and (max-width:600px) and (min-width:0){#LoginFieldSet .field-wide{min-height:10vw !important}}#StartGuide{display:none}.container-normal>#ApiKey{word-break:break-all}div[role="dialog"]{width:100% !important;z-index:999}#EnterPriseBanner,#SupportBanner,#CasesBanner{display:none}#EditorTabsContainer>fieldset{display:contents}#EditorTabsContainer>fieldset>fieldset{display:contents}#TenantImage{width:100%}#Search{width:auto;height:auto}#Breadcrumb{display:none}#CopyToClipboards{display:none}#ViewSelectorField{position:relative;margin-bottom:5px;font-size:2.8vw}#HeaderTitleContainer{margin-bottom:3%}#ViewFilters{font-size:2.6vw;padding-bottom:2%}#Aggregations{font-size:2.6vw}#ViewFilters_Reset{float:none}#ViewFilters.reduced,#Aggregations.reduced{border-bottom:1px solid #aaa;margin-bottom:2%;padding:2%}#Aggregations .label{height:auto}#ViewFilters>.field-auto-thin{height:6vw;padding:0;margin:2% 0 0 0;line-height:1;width:49%;display:flex;justify-content:start;align-items:center}#ViewFilters>.field-auto-thin>.field-control{width:100%}#ViewFilters>.field-auto-thin>.field-label{width:30%;text-align:left}#ViewFilters>.field-auto-thin>.field-label+.field-control{width:70%}.ui-multiselect{width:98%!important;height:6vw}.field-auto-thin input[type="checkbox"],.field-auto-thin input[type="radio"]{height:2.6vw;width:2.6vw;margin-right:1vw}.control-checkbox{margin:0}.control-checkbox+label{margin:0}.field-auto-thin>.field-label{padding:0}#RecordInfo div{clear:both;margin-right:0}#RecordInfo div p{font-size:2.6vw}#Application{padding-bottom:15%}#MainForm{display:flex;flex-direction:column}#RecordInfo{margin-bottom:2%}#RecordSwitchers{font-size:2.6vw;width:100%}.ui-button,#RecordSwitchers .current{height:auto;padding:2%!important;line-height:1;margin-right:2%}#EditorComments{width:100%;order:3;font-size:2.6vw}#EditorTabsContainer{width:100%}.fieldset.ui-tabs-panel.ui-widget-content{font-size:2.6vw}.ui-tabs .ui-tabs-panel{padding:1%}.field-wide,.field-markdown{width:100%;min-height:5vw;float:none;padding:0 0 3% 0;clear:both}.field-normal{width:100%;height:auto;padding:0}.field-normal.right-align{text-align:left}.field-markdown>.field-label,.field-normal>.field-label,.field-wide>.field-label{width:100%;clear:both;margin-left:0;padding:1%;font-weight:bold;text-align:left;text-align-last:left}.field-normal>.field-label label,.field-wide>.field-label label{font-weight:bold}.field-normal .container-normal,.field-control .container-normal{margin-left:0}.control-dropdown{height:auto}.ui-spinner a.ui-spinner-button{height:50%}.field-normal .control-text{width:100%;height:auto;padding:1%;line-height:1}.control-textbox{height:auto}.ui-widget.ui-widget-content{background:#fff;font-size:2.6vw}#Guide{font-size:2.6vw}.alert-success,.alert-warning,.alert-error{height:auto;font-size:2.6vw}#MainCommandsContainer{height:auto;padding:2vw 0;font-size:2.6vw;z-index:200}#Footer{z-index:102}.ui-tabs .ui-tabs-nav{padding:1%;font-size:2.6vw}.ui-tabs .ui-tabs-nav li{margin-bottom:1%;padding-bottom:0;border:1px solid #111;border-radius:4px}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:1%;padding-bottom:0;border:1px solid #111;border-radius:4px}.message{bottom:140px}}@media screen and (max-width:980px) and (min-width:0){body{min-width:320px!important}#Header{height:auto;position:relative}#Header #Logo{padding-bottom:2%}#CorpLogo{float:none;width:30%}#MainContainer{min-height:100vh}#Header a#navtgl{position:absolute;display:block;padding:1.6vw 1.4vw;border:.4vw solid #d19405;border-radius:1vw;top:1.4vw;right:4vw;height:8vw;width:8vw;z-index:101;background:#fece2f}#Header a#navtgl::before{content:'';display:block;height:1.3vw;border-top:.4vw solid #333;border-bottom:.4vw solid #333}#Header a#navtgl::after{content:'';display:block;height:1.4vw;border-bottom:.4vw solid #333}* #Navigations{box-sizing:border-box}#Navigations{width:100%;max-height:0;overflow:hidden;margin:0;padding:0 5%;border:none;position:relative;top:0;right:0;border-radius:0;z-index:100;font-size:3.2vw;line-height:7vw;transition:.5s}#Navigations.open{max-height:none;height:auto;overflow:visible;margin-top:2%;margin-bottom:5%;padding:5%;transition:.5s}#NavigationMenu>li.sub-menu>div.hover{background:none}#Header .ui-widget-header{background:#f3f3f3;color:#111}.ui-widget-header{background:#817865;color:#fff}#NavigationMenu{float:none;margin-right:0;margin-bottom:3%}#SearchField{float:none;margin:0;color:#000}#NavigationMenu>li{width:100%;height:auto;display:block;float:none;position:relative;color:#333}#NavigationMenu>li>div{height:auto;text-align:left;line-height:7vw;color:#333;font-weight:bold}#NavigationMenu>li>div:hover{background:none}#NavigationMenu>li>div>a{height:auto;display:block;color:#333;text-decoration:none;font-weight:bold}#NavigationMenu .menu{width:100%;border-top:none !important;position:relative;top:0;right:0;border-radius:0;z-index:3}.pc-dn{display:block!important}#NavigationMenu .menu>li>a.ui-state-active{font-weight:normal;text-decoration:none}.ui-widget-content{color:#333}.ui-menu .ui-menu-item{border-top:1px solid #d19405}#NewMenuContainer{border:1px solid #d19405;background:#fff}}@media screen and (max-width:980px) and (min-width:0){#SiteMenu .nav-site{width:20vw;height:20vw;text-align:center;background-color:#fff;border:solid 2px #c0c0c0;border-radius:.5vw;float:none;margin:6%}#SiteMenu .sortable{display:flex;justify-content:flex-start;align-items:flex-start;flex-wrap:wrap}#SiteMenu .nav-site.sites{width:20vw!important;height:20vw!important;background:#fff;border:solid 2px #ffa500;border-radius:5px}#SiteMenu .nav-site .heading{width:8vw;height:3vw;top:-3vw;background-color:#f8da4c;border:solid 2px #ffa500}#SiteMenu .nav-site.sites.to-parent{height:auto!important;box-shadow:none;margin-top:3%;margin-bottom:0}#SiteMenu .nav-site.sites.to-parent span.title{position:relative;top:0;text-align:left;width:100%;margin-left:0}#SiteMenu .nav-site.sites.to-parent .heading{display:none}#SiteMenu .nav-site a{padding:0;overflow:inherit}#SiteMenu .nav-site .site-image-thumbnail{position:relative;top:inherit;left:inherit;max-width:inherit;border-radius:unset;width:90%;z-index:1;margin:0 auto;display:block}#SiteMenu .nav-site span.title::before{content:'';display:block;height:0}#SiteMenu .nav-site span.title{margin-left:0;font-size:14px}#SiteMenu .nav-site.has-image a{padding:1vw 0 0}#SiteMenu .nav-site .conditions{position:absolute;top:-2.4vw;right:-2.4vw;z-index:2}#SiteMenu .nav-site .conditions .elapsed-time{display:none}#SiteMenu .nav-site .conditions .count{display:none}#SiteMenu .nav-site .conditions .overdue{height:6vw;min-width:6vw;line-height:6vw;font-size:2.6vw;border-radius:3vw;font-weight:bold;padding:0}#SiteMenu .nav-site[data-type="Wikis"]{border-radius:2px;position:relative;width:20vw;border:2px solid #ccc}#SiteMenu .nav-site[data-type="Wikis"] a::before,#SiteMenu .nav-site[data-type="Wikis"] a::after{content:'';display:block;position:absolute;height:20%;width:80%;left:10%;border-top:2px solid #ccc;border-bottom:2px solid #ccc}#SiteMenu .nav-site[data-type="Wikis"] a::before{top:20%}#SiteMenu .nav-site[data-type="Wikis"] a::after{top:60%}#SiteMenu .nav-site[data-type="Wikis"] a img{margin-top:15%}#SiteMenu .nav-site.sites.to-parent{height:auto!important;border:none;background:none;text-align:left}#SiteMenu .nav-site.to-parent .ui-icon{display:none}#SiteMenu .nav-site.to-parent a{position:relative;display:inline-block;padding:0 0 0 16px;color:#000;vertical-align:middle;text-decoration:none;font-size:15px}#SiteMenu .nav-site.to-parent a::before,#SiteMenu .nav-site.to-parent a::after{position:absolute;top:0;bottom:0;left:0;margin:auto;content:"";vertical-align:middle}#SiteMenu .nav-site.to-parent a::before{left:5px;width:7px;height:3px;background:#7a0}#SiteMenu .nav-site.to-parent a::after{left:2px;width:6px;height:6px;border-bottom:3px solid #7a0;border-left:3px solid #7a0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#SiteMenu .nav-site span.title{margin-left:0;font-size:2.6vw;top:22vw;position:absolute;display:block;text-align:center;width:140%;margin-left:-20%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#SiteMenu .nav-site .stacking1{width:20vw;height:20vw;border-bottom:solid 1px #c0c0c0;border-right:solid 1px #c0c0c0;position:absolute;top:1px;left:1px;border-radius:5px}#SiteMenu .nav-site .stacking2{width:20vw;height:20vw;border-bottom:solid 1px #c0c0c0;border-right:solid 1px #c0c0c0;position:absolute;top:4px;left:4px;border-radius:5px}#SiteMenu .nav-sites .to-parent a img{display:none}#SiteMenu .nav-site.to-parent.has-image a{padding:0 0 0 15px}}@media screen and (max-width:980px) and (min-width:0){#FieldSetStandard{display:flex;flex-direction:column}.legend{order:2}#StandardTemplatesViewer{order:3}.template-selectable{order:1;float:none}.template-viewer-container{float:none;margin:0}.template-viewer{margin:0}.template-selectable{width:100%}.template-tab-container{min-height:10px}.field-vertical{width:100%;float:none;padding:0 0 20px 0}.container-selectable .wrapper{min-height:auto}.h350{height:auto}#EditInDialogBody{padding-bottom:15%}.links{overflow:auto}@media screen and (max-width:980px) and (min-width:0){#FieldSetHistories{overflow:auto;width:100%}#ViewModeContainer{overflow:auto;width:100%;padding-top:1%}#CrosstabBody{overflow:auto;width:100%}#GanttBody{overflow:auto;width:100%;padding-top:5%}.grid{font-size:2.8vw;width:98%}.grid>thead th{min-width:10vw;white-space:nowrap}.grid>tbody td{min-width:10vw;white-space:nowrap}.grid>thead th:nth-child(1),.grid>tbody td:nth-child(1){min-width:1vw}.grid>tbody td p{white-space:nowrap}#Calendar{font-size:2.6vw}#Calendar button{margin-bottom:2%}#CalendarBody #Grid thead{background:#fff}#CalendarMonth{display:block}#Calendar .field-auto-thin{display:flex;align-items:center;width:33%;margin:0;padding:0;margin-bottom:2%!important}#Calendar .field-auto-thin p{margin-right:1%}#Calendar .field-auto-thin select{max-width:none}#CalendarTimePeriod,#CalendarFromTo,#CalendarMonth{height:auto}#CalendarMonth{margin-bottom:2%}.w100{width:auto}#CrosstabBody{margin-top:3%}#CrosstabBody #Grid{table-layout:auto}#CrosstabBody .grid>thead>tr>th,#CrosstabBody .grid>tbody>tr>th{white-space:nowrap}#CrosstabBody .grid>thead th{min-width:10vw;white-space:nowrap}#CrosstabBody .grid>tbody td{min-width:10vw;white-space:nowrap}#Crosstab{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}#Crosstab .field-auto-thin{display:flex;align-items:center;width:48%;margin:0;padding:0;font-size:2.6vw}#Crosstab .field-auto-thin#CrosstabTimePeriodField{width:48%}#Crosstab .field-auto-thin p{width:100%;margin-right:2%;white-space:nowrap}#Crosstab .field-auto-thin select{max-width:none}#Crosstab #CrosstabMonth{width:48%;margin-top:2%;margin-right:0;font-size:2.6vw}#Crosstab button{font-size:2.6vw;margin-top:1%}.svg-crosstab{display:block}#ViewModeContainer .both{display:flex;align-items:center;flex-wrap:wrap}#ViewModeContainer .both .field-auto-thin{display:flex;align-items:center;width:48%;margin:0;padding:0;font-size:2.6vw;height:auto;padding-top:2%}#ViewModeContainer .both .field-auto-thin .field-auto-thin{width:30%}#ViewModeContainer .both .field-auto-thin:nth-child(3){width:100%}#ViewModeContainer .both .field-auto-thin:nth-child(3) .field-auto-thin{width:48%;display:block}#ViewModeContainer .field-auto-thin p{margin-right:2%;white-space:nowrap;text-align:left}#GanttAxis{width:1500px;position:relative;left:0;bottom:0}#Gantt{width:1500px}#BurnDown{width:1500px}#TimeSeriesBody{padding-top:5%;margin-left:-5%;width:1500px}#TimeSeries{width:1500px}#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(3){width:48%}#ViewModeContainer #Kamban.both .field-auto-thin .field-control{width:100%}#KambanBody{margin-top:3%}#KambanBody #Grid{table-layout:auto}#KambanBody .grid>thead>tr>th,#KambanBody .grid>tbody>tr>th{white-space:nowrap}#KambanBody .grid>thead th{min-width:10vw;white-space:nowrap}#KambanBody .grid>tbody td{min-width:10vw;white-space:nowrap}}@media screen and (min-width:981px){.grid>thead>tr:first-child>th:first-child{width:20px}#CrosstabBody .grid>thead>tr:first-child>th:first-child,#KambanBody .grid>thead>tr:first-child>th:first-child{width:auto}.grid>thead>tr:first-child>th:not(:first-child){white-space:nowrap}#CrosstabBody .grid>thead>tr:first-child>th:not(:first-child),#KambanBody .grid>thead>tr:first-child>th:not(:first-child){white-space:inherit}.grid>tbody>tr td:not(:first-child){white-space:nowrap;min-width:40px}#CrosstabBody .grid>tbody>tr td:not(:first-child),#KambanBody .grid>tbody>tr td:not(:first-child){white-space:inherit;min-width:auto}}
\ No newline at end of file
+@media screen and (max-width:980px) and (min-width:0){#LoginFieldSet{width:100%;padding:10px;font-size:4vw}#LoginFieldSet input,#LoginFieldSet select{font-size:5vw;padding:10px}#LoginFieldSet input[type=checkbox]{transform:scale(2);margin:20px 0 0 10px}#LoginFieldSet button{font-size:4vw}#LoginFieldSet .container-normal{margin-left:0}#LoginFieldSet .field-wide,#LoginFieldSet .field-normal{width:100%;margin:10px 0;float:left}#LoginFieldSet .field-normal .control-checkbox+label{width:auto;margin:0 0 0 30px}#Logins .field-label{width:auto;padding:4px}#LoginMessage{width:100%}#Demo{width:100%;padding:10px;font-size:4vw}#DemoFields .field-label{width:auto;padding:4px}#DemoFields input{font-size:5vw;padding:10px}#DemoFields button{font-size:4vw;float:right;margin-top:10px}#DemoFields .container-normal{margin-left:0}#DemoFields .field-normal{width:100%;margin:10px 0;float:left}#StartGuide{display:none}.container-normal>#ApiKey{word-break:break-all}div[role="dialog"]{width:98% !important;z-index:999}#EnterPriseBanner,#SupportBanner,#CasesBanner{display:none}#EditorTabsContainer>fieldset{display:contents}#EditorTabsContainer>fieldset>fieldset{display:contents}#TenantImage{width:100%}#Search{width:auto;height:auto}#Breadcrumb{display:none}#CopyToClipboards{display:none}#ViewSelectorField{position:relative;margin-bottom:5px;font-size:2.8vw}#HeaderTitleContainer{margin-bottom:3%}#ViewFilters{font-size:2.6vw;padding-bottom:2%}#Aggregations{font-size:2.6vw}#ViewFilters_Reset{float:none}#ViewFilters.reduced,#Aggregations.reduced{border-bottom:1px solid #aaa;margin-bottom:2%;padding:2%}#Aggregations .label{height:auto}#ViewFilters>.field-auto-thin{height:6vw;padding:0;margin:2% 0 0 0;line-height:1;width:49%;display:flex;justify-content:start;align-items:center}#ViewFilters>.field-auto-thin>.field-control{width:100%}#ViewFilters>.field-auto-thin>.field-label{width:30%;text-align:left}#ViewFilters>.field-auto-thin>.field-label+.field-control{width:70%}.ui-multiselect{width:100% !important;height:6vw}.field-auto-thin input[type="checkbox"],.field-auto-thin input[type="radio"]{height:2.6vw;width:2.6vw;margin-right:1vw}.control-checkbox{margin:0}.control-checkbox+label{margin:0}.field-auto-thin>.field-label{padding:0}#RecordInfo div{clear:both;margin-right:0}#RecordInfo div p{font-size:2.6vw}#Application{padding-bottom:15%}#MainForm{display:flex;flex-direction:column}#RecordInfo{margin-bottom:2%}#RecordSwitchers{font-size:2.6vw;width:100%}.ui-button,#RecordSwitchers .current{height:auto;padding:2%!important;line-height:1;margin-right:2%}#EditorComments{width:100%;order:3;font-size:2.6vw}#EditorTabsContainer{width:100%}.fieldset.ui-tabs-panel.ui-widget-content{font-size:2.6vw}.ui-tabs .ui-tabs-panel{padding:1%}.field-wide,.field-markdown{width:100%;min-height:5vw;float:none;padding:0 0 3% 0;clear:both}.field-normal{width:100%;height:auto;padding:0}.field-normal.right-align{text-align:left}.field-markdown>.field-label,.field-normal>.field-label,.field-wide>.field-label{width:100%;clear:both;margin-left:0;padding:1%;font-weight:bold;text-align:left;text-align-last:left}.field-normal>.field-label label,.field-wide>.field-label label{font-weight:bold}.field-normal .container-normal,.field-control .container-normal{margin-left:0}.control-dropdown{height:auto}.ui-spinner a.ui-spinner-button{height:50%}.field-normal .control-text{width:100%;height:auto;padding:1%;line-height:1}.control-textbox{height:auto}.ui-widget.ui-widget-content{font-size:2.6vw}#Guide{font-size:2.6vw}.alert-success,.alert-warning,.alert-error{height:auto;font-size:2.6vw}#MainCommandsContainer{height:auto;padding:2vw 0;font-size:2.6vw;z-index:200}#Footer{z-index:102}.ui-tabs .ui-tabs-nav{padding:1%;font-size:2.6vw}.ui-tabs .ui-tabs-nav li{margin-bottom:1%;padding-bottom:0;border-radius:4px}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:1%;padding-bottom:0;border-radius:4px}.message{bottom:140px}}@media screen and (max-width:980px) and (min-width:0){body{min-width:320px!important}#Header{height:auto;position:relative}#CorpLogo{float:none;width:30%}#MainContainer{min-height:100vh}#Header a#navtgl{position:absolute;display:block;padding:1.6vw 1.4vw;border:.4vw solid #d19405;border-radius:1vw;top:1.4vw;right:4vw;height:8vw;width:8vw;z-index:101;background:#fece2f}#Header a#navtgl::before{content:'';display:block;height:1.3vw;border-top:.4vw solid #333;border-bottom:.4vw solid #333}#Header a#navtgl::after{content:'';display:block;height:1.4vw;border-bottom:.4vw solid #333}* #Navigations{box-sizing:border-box}#Navigations{width:100%;max-height:0;overflow:hidden;margin:0;padding:0 5%;border:none;position:relative;top:0;right:0;border-radius:0;z-index:100;font-size:3.2vw;line-height:7vw;transition:.5s}#Navigations.open{max-height:none;height:auto;overflow:visible;margin-top:2%;margin-bottom:5%;padding:5%;transition:.5s}#NavigationMenu>li.sub-menu>div.hover{background:none}#NavigationMenu{float:none;margin-right:0;margin-bottom:3%}#SearchField{float:none;margin:0;color:#000}#NavigationMenu>li{width:100%;height:auto;display:block;float:none;position:relative}#NavigationMenu>li>div{height:auto;text-align:left;line-height:7vw;font-weight:bold}#NavigationMenu>li>div:hover{background:none}#NavigationMenu>li>div>a{height:auto;display:block;text-decoration:none;font-weight:bold}#NavigationMenu .menu{width:100%;border-top:none !important;position:relative;top:0;right:0;border-radius:0;z-index:3}.pc-dn{display:block!important}#NavigationMenu .menu>li>a.ui-state-active{font-weight:normal;text-decoration:none}.ui-menu .ui-menu-item{border-top:1px solid #d19405}#NewMenuContainer{border:1px solid #d19405;background:#fff}}@media screen and (max-width:980px) and (min-width:0){#SiteMenu .nav-site{width:20vw;height:20vw;text-align:center;border-radius:.5vw;float:none;margin:6%}#SiteMenu .sortable{display:flex;justify-content:flex-start;align-items:flex-start;flex-wrap:wrap}#SiteMenu .nav-site.sites{width:20vw!important;height:20vw!important;background:#fff;border-radius:5px}#SiteMenu .nav-site .heading{width:8vw;height:3vw;top:-3vw}#SiteMenu .nav-site.sites.to-parent{height:auto!important;box-shadow:none;margin-top:3%;margin-bottom:0}#SiteMenu .nav-site.sites.to-parent span.title{position:relative;top:0;text-align:left;width:100%;margin-left:0}#SiteMenu .nav-site.sites.to-parent .heading{display:none}#SiteMenu .nav-site a{padding:0;overflow:inherit}#SiteMenu .nav-site .site-image-thumbnail{position:relative;top:inherit;left:inherit;max-width:inherit;border-radius:unset;width:90%;z-index:1;margin:0 auto;display:block}#SiteMenu .nav-site span.title::before{content:'';display:block;height:0}#SiteMenu .nav-site span.title{margin-left:0;font-size:14px}#SiteMenu .nav-site.has-image a{padding:1vw 0 0}#SiteMenu .nav-site .conditions{position:absolute;top:-2.4vw;right:-2.4vw;z-index:2}#SiteMenu .nav-site .conditions .elapsed-time{display:none}#SiteMenu .nav-site .conditions .count{display:none}#SiteMenu .nav-site .conditions .overdue{height:6vw;min-width:6vw;line-height:6vw;font-size:2.6vw;border-radius:3vw;font-weight:bold;padding:0}#SiteMenu .nav-site[data-type="Wikis"]{border-radius:2px;position:relative;width:20vw;border:2px solid #ccc}#SiteMenu .nav-site[data-type="Wikis"] a::before,#SiteMenu .nav-site[data-type="Wikis"] a::after{content:'';display:block;position:absolute;height:20%;width:80%;left:10%;border-top:2px solid #ccc;border-bottom:2px solid #ccc}#SiteMenu .nav-site[data-type="Wikis"] a::before{top:20%}#SiteMenu .nav-site[data-type="Wikis"] a::after{top:60%}#SiteMenu .nav-site[data-type="Wikis"] a img{margin-top:15%}#SiteMenu .nav-site.sites.to-parent{height:auto!important;border:none;background:none;text-align:left}#SiteMenu .nav-site.to-parent .ui-icon{display:none}#SiteMenu .nav-site.to-parent a{position:relative;display:inline-block;padding:0 0 0 16px;color:#000;vertical-align:middle;text-decoration:none;font-size:15px}#SiteMenu .nav-site.to-parent a::before,#SiteMenu .nav-site.to-parent a::after{position:absolute;top:0;bottom:0;left:0;margin:auto;content:"";vertical-align:middle}#SiteMenu .nav-site.to-parent a::before{left:5px;width:7px;height:3px;background:#7a0}#SiteMenu .nav-site.to-parent a::after{left:2px;width:6px;height:6px;border-bottom:3px solid #7a0;border-left:3px solid #7a0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#SiteMenu .nav-site span.title{margin-left:0;font-size:2.6vw;top:22vw;position:absolute;display:block;text-align:center;width:140%;margin-left:-20%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#SiteMenu .nav-site .stacking1{width:20vw;height:20vw;border-bottom:solid 1px #c0c0c0;border-right:solid 1px #c0c0c0;position:absolute;top:1px;left:1px;border-radius:5px}#SiteMenu .nav-site .stacking2{width:20vw;height:20vw;border-bottom:solid 1px #c0c0c0;border-right:solid 1px #c0c0c0;position:absolute;top:4px;left:4px;border-radius:5px}#SiteMenu .nav-sites .to-parent a img{display:none}#SiteMenu .nav-site.to-parent.has-image a{padding:0 0 0 15px}}@media screen and (max-width:980px) and (min-width:0){#FieldSetStandard{display:flex;flex-direction:column}.legend{order:2}#StandardTemplatesViewer{order:3}.template-selectable{order:1;float:none}.template-viewer-container{float:none;margin:0}.template-viewer{margin:0}.template-selectable{width:100%}.template-tab-container{min-height:10px}.field-vertical{width:100%;float:none;padding:0 0 20px 0}.container-selectable .wrapper{min-height:auto}.h350{height:auto}#EditInDialogBody{padding-bottom:15%}.links{overflow:auto}@media screen and (max-width:980px) and (min-width:0){#FieldSetHistories{overflow:auto;width:100%}#ViewModeContainer{overflow:auto;width:100%;padding-top:1%}#CrosstabBody{overflow:auto;width:100%}#GanttBody{overflow:auto;width:100%;padding-top:5%}.grid{font-size:2.8vw;width:98%}.grid>thead th{min-width:10vw;white-space:nowrap}.grid>tbody td{min-width:10vw;white-space:nowrap}.grid>thead th:nth-child(1),.grid>tbody td:nth-child(1){min-width:1vw}.grid>tbody td p{white-space:nowrap}#Calendar{font-size:2.6vw}#Calendar button{margin-bottom:2%}#CalendarBody #Grid thead{background:#fff}#CalendarMonth{display:block}#Calendar .field-auto-thin{display:flex;align-items:center;width:33%;margin:0;padding:0;margin-bottom:2%!important}#Calendar .field-auto-thin p{margin-right:1%}#Calendar .field-auto-thin select{max-width:none}#CalendarTimePeriod,#CalendarFromTo,#CalendarMonth{height:auto}#CalendarMonth{margin-bottom:2%}.w100{width:auto}#CrosstabBody{margin-top:3%}#CrosstabBody #Grid{table-layout:auto}#CrosstabBody .grid>thead>tr>th,#CrosstabBody .grid>tbody>tr>th{white-space:nowrap}#CrosstabBody .grid>thead th{min-width:10vw;white-space:nowrap}#CrosstabBody .grid>tbody td{min-width:10vw;white-space:nowrap}#Crosstab{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}#Crosstab .field-auto-thin{display:flex;align-items:center;width:48%;margin:0;padding:0;font-size:2.6vw}#Crosstab .field-auto-thin#CrosstabTimePeriodField{width:48%}#Crosstab .field-auto-thin p{width:100%;margin-right:2%;white-space:nowrap}#Crosstab .field-auto-thin select{max-width:none}#Crosstab #CrosstabMonth{width:48%;margin-top:2%;margin-right:0;font-size:2.6vw}#Crosstab button{font-size:2.6vw;margin-top:1%}.svg-crosstab{display:block}#ViewModeContainer .both{display:flex;align-items:center;flex-wrap:wrap}#ViewModeContainer .both .field-auto-thin{display:flex;align-items:center;width:48%;margin:0;padding:0;font-size:2.6vw;height:auto;padding-top:2%}#ViewModeContainer .both .field-auto-thin .field-auto-thin{width:30%}#ViewModeContainer .both .field-auto-thin:nth-child(3){width:100%}#ViewModeContainer .both .field-auto-thin:nth-child(3) .field-auto-thin{width:48%;display:block}#ViewModeContainer .field-auto-thin p{margin-right:2%;white-space:nowrap;text-align:left}#GanttAxis{width:1500px;position:relative;left:0;bottom:0}#Gantt{width:1500px}#BurnDown{width:1500px}#TimeSeriesBody{padding-top:5%;margin-left:-5%;width:1500px}#TimeSeries{width:1500px}#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(3){width:48%}#ViewModeContainer #Kamban.both .field-auto-thin .field-control{width:100%}#KambanBody{margin-top:3%}#KambanBody #Grid{table-layout:auto}#KambanBody .grid>thead>tr>th,#KambanBody .grid>tbody>tr>th{white-space:nowrap}#KambanBody .grid>thead th{min-width:10vw;white-space:nowrap}#KambanBody .grid>tbody td{min-width:10vw;white-space:nowrap}}@media screen and (max-width:980px) and (min-width:0){#Header{padding:0 calc(5vw)}#Header a#navtgl{right:5vw}#Application,#Footer{padding-left:5vw;padding-right:5vw}#SiteMenu .nav-site{margin:5%}:not(td)>div.field-control .container-normal{margin-left:0}*{line-height:1.4}.field-normal .control-textbox,.field-normal .control-dropdown,.field-normal .control-text,.field-control .control-textbox,.field-control .control-dropdown,.field-control .control-text,.container-normal .control-textbox,.container-normal .control-dropdown,.container-normal .control-text{min-height:unset;height:6vw;line-height:6vw;padding-top:0;padding-bottom:0}body{font-size:16px}}@media screen and (max-width:980px) and (min-width:0){#HeaderTitle{font-size:16px}}@media screen and (max-width:980px) and (min-width:0){.command-center{padding:0}.ui-dialog .ui-dialog-titlebar-close{top:0;bottom:0;width:5vw;height:5vw;margin:auto 0}}@media screen and (max-width:980px) and (min-width:0){#ViewSelector{font-size:2.6vw}}@media screen and (max-width:980px) and (min-width:0){#Logo a{align-items:center;display:flex}#Logo #ProductLogo{font-size:18px;padding-left:8px}#CorpLogo{float:none;height:calc(8vw + 10px);width:unset;margin-top:0}}@media screen and (max-width:980px) and (min-width:0){#Editor .field-control .container-normal{width:calc(100% - 20px)}#Editor .field-control .ui-icon.ui-icon-clock.current-time{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjEycHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjwvZz48Zz48Zz48Zz48cGF0aCBkPSJNMTIsMkM2LjUsMiwyLDYuNSwyLDEyczQuNSwxMCwxMCwxMHMxMC00LjUsMTAtMTBTMTcuNSwyLDEyLDJ6IE0xNi4yLDE2LjJMMTEsMTNWN2gxLjV2NS4ybDQuNSwyLjdMMTYuMiwxNi4yeiIvPjwvZz48L2c+PC9nPjwvc3ZnPg==");background-position:center;width:12px;height:12px;filter:invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);top:calc(3vw - 3.5px);right:-16px}#Editor .field-control .ui-icon.ui-icon-person.current-user{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTJweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTJweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMiAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAgMmMtMi42NyAwLTggMS4zNC04IDR2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHoiLz48L3N2Zz4=");background-position:center;width:12px;height:12px;filter:invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);top:calc(3vw - 3.5px);right:-16px}}@media screen and (max-width:980px) and (min-width:0){#FieldSetAddressBook #OutgoingMailDestinationForm .container-left{width:38vw}#FieldSetAddressBook #OutgoingMailDestinationForm .container-right .command-left{float:unset;padding:0}#FieldSetAddressBook #OutgoingMailDestinationForm .container-right .command-left button{margin:2px}#FieldSetAddressBook #OutgoingMailDestinationForm .container-right .container-selectable .wrapper{height:40vw}#FieldSetAddressBook #OutgoingMailDestinationForm .container-right>*{margin-left:40vw}}@media screen and (max-width:980px) and (min-width:0){#Issues_WorkValue{width:100px}}@media screen and (max-width:980px) and (min-width:0){body::before{content:'';position:fixed;width:5vw;height:50vh;top:0;left:0;background:#fff;z-index:200}body::after{content:'';position:fixed;width:5vw;height:50vh;top:0;right:0;background:#fff;z-index:700}}@media screen and (max-width:980px) and (min-width:0){#Users_LoginId,#Users_Password{height:40px}#LoginMessage span{font-size:3.5vw}#PortalLink{font-size:3.5vw;top:3vw}#LoginFieldSet{margin:65px auto 20px auto}#LoginFieldSet input[type=checkbox]{margin:auto 0;margin-left:1.2vw}#LoginFieldSet button{margin-top:0}#LoginFieldSet .field-wide,#LoginFieldSet .field-normal{margin:0 0}#LoginFieldSet .field-normal .control-checkbox+label{margin:auto 0;margin-left:4vw;padding:0}#Logins .field-label{width:100%}}@media screen and (max-width:980px) and (min-width:0){#Editor .field-markdown>.field-label>label{font-weight:bold}#Editor .field-control .unit{font-size:2.6vw;padding-top:calc((18px - 1.4em)/2)}#Editor .ui-spinner .control-spinner{height:100%}}@media screen and (max-width:980px) and (min-width:0){#GridCheckAll{margin-top:0}label[for="GridCheckAll"]{margin:0}#Footer{font-size:2.8vw;height:auto}#MainCommandsContainer{bottom:calc(2.8vw*1.4 + 10px)}body>thead>tr{font-size:.75em}}@media screen and (max-width:980px) and (min-width:0){#SiteImageSettingsEditor .field-auto-thin,#GridSettingsEditor .field-auto-thin,#FiltersSettingsEditor .field-auto-thin,#EditorSettingsEditor .field-auto-thin,#LinksSettingsEditor .field-auto-thin,#HistoriesSettingsEditor .field-auto-thin,#FormulasSettingsEditor .field-auto-thin,#ViewsSettingsEditor .field-auto-thin,#ImportsSettingsEditor .field-auto-thin,#ExportsSettingsEditor .field-auto-thin,#CalendarSettingsEditor .field-auto-thin,#CrosstabSettingsEditor .field-auto-thin,#GanttSettingsEditor .field-auto-thin,#BurnDownSettingsEditor .field-auto-thin,#TimeSeriesSettingsEditor .field-auto-thin,#KambanSettingsEditor .field-auto-thin,#ImageLibSettingsEditor .field-auto-thin,#SearchSettingsEditor .field-auto-thin,#StylesSettingsEditor .field-auto-thin,#ScriptsSettingsEditor .field-auto-thin,#PublishSettingsEditor .field-auto-thin,#FieldSetSiteAccessControl .field-auto-thin{padding-right:0;height:auto;display:flex;align-items:center;clear:both}#SiteImageSettingsEditor .field-auto-thin .container-normal,#GridSettingsEditor .field-auto-thin .container-normal,#FiltersSettingsEditor .field-auto-thin .container-normal,#EditorSettingsEditor .field-auto-thin .container-normal,#LinksSettingsEditor .field-auto-thin .container-normal,#HistoriesSettingsEditor .field-auto-thin .container-normal,#FormulasSettingsEditor .field-auto-thin .container-normal,#ViewsSettingsEditor .field-auto-thin .container-normal,#ImportsSettingsEditor .field-auto-thin .container-normal,#ExportsSettingsEditor .field-auto-thin .container-normal,#CalendarSettingsEditor .field-auto-thin .container-normal,#CrosstabSettingsEditor .field-auto-thin .container-normal,#GanttSettingsEditor .field-auto-thin .container-normal,#BurnDownSettingsEditor .field-auto-thin .container-normal,#TimeSeriesSettingsEditor .field-auto-thin .container-normal,#KambanSettingsEditor .field-auto-thin .container-normal,#ImageLibSettingsEditor .field-auto-thin .container-normal,#SearchSettingsEditor .field-auto-thin .container-normal,#StylesSettingsEditor .field-auto-thin .container-normal,#ScriptsSettingsEditor .field-auto-thin .container-normal,#PublishSettingsEditor .field-auto-thin .container-normal,#FieldSetSiteAccessControl .field-auto-thin .container-normal{width:100%}#SiteImageSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#GridSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#FiltersSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#EditorSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#LinksSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#HistoriesSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#FormulasSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#ViewsSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#ImportsSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#ExportsSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#CalendarSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#CrosstabSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#GanttSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#BurnDownSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#TimeSeriesSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#KambanSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#ImageLibSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#SearchSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#StylesSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#ScriptsSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#PublishSettingsEditor .field-auto-thin .container-normal .control-checkbox~label,#FieldSetSiteAccessControl .field-auto-thin .container-normal .control-checkbox~label{display:unset;float:unset;width:auto}#SiteImageSettingsEditor .field-auto-thin .field-label~.field-control,#GridSettingsEditor .field-auto-thin .field-label~.field-control,#FiltersSettingsEditor .field-auto-thin .field-label~.field-control,#EditorSettingsEditor .field-auto-thin .field-label~.field-control,#LinksSettingsEditor .field-auto-thin .field-label~.field-control,#HistoriesSettingsEditor .field-auto-thin .field-label~.field-control,#FormulasSettingsEditor .field-auto-thin .field-label~.field-control,#ViewsSettingsEditor .field-auto-thin .field-label~.field-control,#ImportsSettingsEditor .field-auto-thin .field-label~.field-control,#ExportsSettingsEditor .field-auto-thin .field-label~.field-control,#CalendarSettingsEditor .field-auto-thin .field-label~.field-control,#CrosstabSettingsEditor .field-auto-thin .field-label~.field-control,#GanttSettingsEditor .field-auto-thin .field-label~.field-control,#BurnDownSettingsEditor .field-auto-thin .field-label~.field-control,#TimeSeriesSettingsEditor .field-auto-thin .field-label~.field-control,#KambanSettingsEditor .field-auto-thin .field-label~.field-control,#ImageLibSettingsEditor .field-auto-thin .field-label~.field-control,#SearchSettingsEditor .field-auto-thin .field-label~.field-control,#StylesSettingsEditor .field-auto-thin .field-label~.field-control,#ScriptsSettingsEditor .field-auto-thin .field-label~.field-control,#PublishSettingsEditor .field-auto-thin .field-label~.field-control,#FieldSetSiteAccessControl .field-auto-thin .field-label~.field-control{margin-left:10px}#SiteImageSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#GridSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#FiltersSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#EditorSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#LinksSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#HistoriesSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#FormulasSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#ViewsSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#ImportsSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#ExportsSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#CalendarSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#CrosstabSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#GanttSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#BurnDownSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#TimeSeriesSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#KambanSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#ImageLibSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#SearchSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#StylesSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#ScriptsSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#PublishSettingsEditor .field-auto-thin .field-label~.field-control .container-normal,#FieldSetSiteAccessControl .field-auto-thin .field-label~.field-control .container-normal{width:100%}#FieldSetGeneral .field-control .container-normal .control-checkbox~label{width:auto}#GridSettingsEditor #GridEditorType{max-width:unset}#SiteImageSettingsEditor #SiteImage{width:100%;height:7vw}#SiteImageSettingsEditor #SetSiteImage{margin-right:0}}@media screen and (max-width:980px) and (min-width:0){#Aggregations{display:flex;flex-wrap:wrap;row-gap:5px;justify-content:flex-start;align-items:center}#Aggregations span.label{flex:1 0 auto;margin:0;text-align:center;align-self:stretch;display:flex;align-items:center;justify-content:flex-start}#Aggregations span.data{flex:1 0 auto;margin:0;align-self:stretch;display:flex;align-items:center;justify-content:flex-start;height:auto}#Aggregations span.data.no-choice{flex-basis:auto;align-self:stretch}#Aggregations span.data.link span{font-weight:bold}#Aggregations #ReduceAggregations{width:100%}}@media screen and (max-width:980px) and (min-width:0){#ViewModeContainer .grid{vertical-align:middle}#ViewModeContainer .grid tr td:first-child{padding:6px}input[type='checkbox'],.field-auto-thin input[type='checkbox']{width:3vw;height:3vw}.field-auto-thin input[type='checkbox']+label{padding-top:2px}}@media screen and (max-width:980px) and (min-width:0){#SearchField #Search{font-size:3vw;width:100%}#SearchField #Search::placeholder{font-size:3vw}}@media screen and (max-width:980px) and (min-width:0){#ViewFilters #ViewFilters_Reset{margin-left:auto;margin-right:0}#ViewFilters .field-auto-thin{width:50%}#ViewFilters .field-auto-thin .field-control .container-normal{display:flex;align-items:center}#ViewFilters .field-auto-thin .field-control .container-normal input[type='checkbox']{margin-right:4px;margin-top:1px}#ViewFilters .field-auto-thin .field-control .container-normal .ui-widget.ui-state-default.ui-multiselect,#ViewFilters .field-auto-thin .field-control .container-normal .control-textbox{height:6vw;font-size:2.6vw}#ViewFilters #ViewFilters_SearchField{width:100%}#ViewFilters #ViewFilters_SearchField p.field-label{width:17%}#ViewFilters #ViewFilters_SearchField .field-control{width:100%}#ViewFilters>.field-auto-thin:nth-child(odd){padding-right:2px}#ViewFilters>.field-auto-thin:nth-child(even){padding-left:2px}.ui-multiselect-menu .ui-helper-reset{position:relative}.ui-multiselect-menu .ui-helper-reset li{width:100%}.ui-multiselect-menu .ui-helper-reset li>label span{position:relative;top:-4px}.ui-multiselect-menu .ui-helper-reset li .ui-multiselect-all,.ui-multiselect-menu .ui-helper-reset li .ui-multiselect-none{width:100%;display:flex;align-items:center}.ui-multiselect-menu .ui-helper-reset li .ui-multiselect-all span:last-child,.ui-multiselect-menu .ui-helper-reset li .ui-multiselect-none span:last-child{padding-left:10px}.ui-multiselect-menu .ui-helper-reset li .ui-multiselect-close{position:absolute;top:8px;right:0}}@media screen and (max-width:980px) and (min-width:0){#EditorTabsContainer .legend.applied{display:flex;align-items:center;font-weight:bold}#EditorTabsContainer #PermissionEditor .field-vertical:first-child>.field-control{border-bottom:1px solid #d19405;padding-bottom:2vw}#EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left{display:flex;align-items:center;flex-wrap:wrap;width:100%}#EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left #SearchPermissionElements{margin:2px 1vw 2px 6vw;height:7vw}#EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left button{align-self:stretch;display:flex;align-items:center;justify-content:center;white-space:nowrap}#EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left button .ui-icon{position:relative;top:.5vw;width:18px;height:18px;margin-right:0}#EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left #OpenPermissionsDialog,#EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left #DeletePermissions{line-height:1.5}#EditorTabsContainer #PermissionEditor .field-control .container-selectable #CurrentPermissionsWrapper{min-height:15vw}}@media screen and (max-width:980px) and (min-width:0){thead>tr.ui-widget-header th div>span{font-size:2.8vw;white-space:nowrap}}@media screen and (max-width:980px) and (min-width:0){#EditorTabsContainer .field-control .container-normal .ui-icon.ui-icon-pencil.button-edit-markdown{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTJweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTJweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6Ii8+PC9zdmc+");background-position:center;width:12px;height:12px;filter:invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);top:8px;right:4px}#EditorTabsContainer .field-control .container-normal .ui-icon.ui-icon-image.button-upload-image{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTJweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTJweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMSAxOVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMy41bDIuNSAzLjAxTDE0LjUgMTJsNC41IDZINWwzLjUtNC41eiIvPjwvc3ZnPg==");background-position:center;width:12px;height:12px;filter:invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);position:relative;left:-1px}}@media screen and (max-width:980px) and (min-width:0){#EditorTabsContainer{overflow:auto}#EditorComments{padding:0;margin:0}#EditorComments #CommentField .control-textarea{height:15vw}#EditorComments #CommentField .control-textarea::placeholder{font-size:2.6vw}}@media screen and (max-width:980px) and (min-width:0){.is-showMenu{overflow:hidden}.is-showMenu body{position:fixed;overflow:hidden}.bg-overlay{background:rgba(0,0,0,.5);position:fixed;top:0;left:0;z-index:301;width:100%;height:100%;display:none}#MainContainer{overflow:hidden}header#Header{position:fixed;top:0;z-index:1000;background-color:#fff;transition:all .5s ease}header#Header a#navtgl{top:8px;z-index:1000;transition:all .5s ease}header#Header a#navtgl::after{transition:all .5s ease}header#Header a#navtgl.on{transition:all .5s ease;position:fixed}header#Header a#navtgl.on::before{transition:all .5s ease;border-top:none;transform:translate(12.5%,50%) rotate(50deg)}header#Header a#navtgl.on::after{transition:all .5s ease;transform:translate(12.5%,0%) rotate(126deg)}#Navigations{transition:all .5s ease;max-height:100vh;height:100vh;position:absolute;top:0;right:-1000px;z-index:999;padding:5%;width:70%;padding-top:112px;opacity:0}#Navigations.open{opacity:1;padding-top:112px;right:0;height:100vh;margin:0;position:fixed;top:0;z-index:1000}}@media screen and (max-width:980px) and (min-width:0){#OutgoingMailsForm{width:100%;font-size:2.6vw}#OutgoingMailsForm .item h3.title-header{height:auto}#OutgoingMailsForm .item .content{padding:.2em;margin:0}#OutgoingMailsForm .item .content .field-auto,#OutgoingMailsForm .item .content .field-auto-thin{width:100%;margin-right:0;padding-right:0;padding-bottom:0;display:flex;flex-direction:column;height:auto}#OutgoingMailsForm .item .content .field-auto .field-label,#OutgoingMailsForm .item .content .field-auto-thin .field-label{float:none;padding:7px 7px 7px 0;width:100%;text-align:left;display:block}#OutgoingMailsForm .item .content .field-auto .field-label label,#OutgoingMailsForm .item .content .field-auto-thin .field-label label{font-weight:bold}#OutgoingMailsForm .item .content .field-auto .field-control,#OutgoingMailsForm .item .content .field-auto-thin .field-control{float:none;width:100%}#OutgoingMailsForm .item .content .field-auto .field-control .container-normal,#OutgoingMailsForm .item .content .field-auto-thin .field-control .container-normal{margin-right:0;width:100%}#OutgoingMailsForm .item .content .field-auto .field-control .container-normal .control-text,#OutgoingMailsForm .item .content .field-auto-thin .field-control .container-normal .control-text{min-height:0;height:auto}#OutgoingMailsForm .item .content .field-auto-thin{margin-left:0}#OutgoingMailsForm .item .content .field-wide{display:flex;flex-direction:column;padding:0}#OutgoingMailsForm .item .content .field-wide .field-label{padding:7px 0}#OutgoingMailsForm .item .content .field-wide .field-control .container-normal{margin-right:0;width:100%}}@media screen and (max-width:980px) and (min-width:0){#SiteMenu li.ui-sortable-handle{touch-action:unset}}@media screen and (max-width:980px) and (min-width:0){.message .close{top:unset;bottom:calc(50% - 8px);margin:auto}}@media screen and (max-width:980px) and (min-width:0){#EditorComments #CommentField .ui-icon.ui-icon-image.button-upload-image{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTJweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTJweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMSAxOVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMy41bDIuNSAzLjAxTDE0LjUgMTJsNC41IDZINWwzLjUtNC41eiIvPjwvc3ZnPg==");background-position:center;width:12px;height:12px;filter:invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);position:relative;left:0}}@media screen and (max-width:980px) and (min-width:0){#Navigations.open{overflow-y:scroll}#Navigations #NavigationMenu #NewMenuContainer{background:unset;border:none}#Navigations #NavigationMenu #NewMenuContainer a{line-height:7vw}#Navigations #NavigationMenu li.sub-menu .ui-menu-item .ui-menu-item-wrapper{font-size:3vw;padding-left:6vw}}@media screen and (max-width:980px) and (min-width:0){#Editor .field-normal .field-control .container-normal input[type='checkbox'].control-checkbox{position:relative;margin-right:6px;margin-top:.3vw}}@media screen and (max-width:980px) and (min-width:0){#Editor #EditorTabsContainer .field-normal,#Editor #EditorTabsContainer .field-wide,#Editor #EditorTabsContainer .field-markdown{display:inline-block;margin-top:8px;padding-bottom:0}}@media screen and (max-width:980px) and (min-width:0){#ViewModeContainer #Calendar.both select{font-size:2.6vw}#ViewModeContainer #Calendar.both .field-label{min-width:30%;margin-right:15px}#ViewModeContainer #Calendar.both .field-auto-thin .field-control .container-normal{display:flex;align-items:center}#ViewModeContainer #Calendar.both .field-auto-thin:nth-child(3){flex:0 1 calc(64%)}#ViewModeContainer #Calendar.both .field-auto-thin:nth-child(3) .field-label{min-width:22%}#ViewModeContainer #Calendar.both .field-auto-thin:nth-child(3) .field-control{width:74%}#ViewModeContainer #Calendar.both .field-auto-thin:nth-child(4){flex:0 1 calc(33% + 1px);padding-top:2%}#ViewModeContainer #Calendar.both .field-auto-thin:nth-child(4) .field-control .container-normal{justify-content:flex-end}#ViewModeContainer #Calendar.both .field-auto-thin:nth-child(4) .field-control .container-normal #CalendarDate{margin-right:0;width:98%;font-size:2.6vw}#ViewModeContainer #Calendar.both button{flex:1 0 calc((100%/3) - 32px);margin:2% 10px 2% 10px}#ViewModeContainer .grid.fixed{width:100%}#ViewModeContainer .grid.fixed tbody tr td.container .item{touch-action:auto;min-height:50px}#ViewModeContainer .grid.fixed tbody tr td.container .item .title .ui-icon.ui-icon-pencil{margin-right:5px;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMzBweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMzBweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6Ii8+PC9zdmc+");background-position:center;width:36px;height:36px;filter:invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%)}#ViewModeContainer .grid.fixed tbody tr td.container .item .connection{min-height:50px}#ViewModeContainer .grid.fixed tbody tr td.container .dummy{height:50px}#ViewModeContainer .grid.fixed tbody tr td.container:first-child .item{margin-top:0;margin-bottom:5px}#ViewModeContainer .grid.fixed tbody tr td.container:not(:first-child) .item{margin-top:5px}thead th.calendar-header{overflow-x:hidden}}@media screen and (max-width:980px) and (min-width:0){#ViewModeContainer .both{column-gap:16px}#ViewModeContainer .both .field-auto-thin:first-child,#ViewModeContainer .both .field-auto-thin:nth-child(2){flex:0 1 calc(50% - 8px)}#ViewModeContainer .both .field-auto-thin:first-child .field-control,#ViewModeContainer .both .field-auto-thin:nth-child(2) .field-control{flex:1}#ViewModeContainer .both .field-auto-thin:first-child .field-control select,#ViewModeContainer .both .field-auto-thin:nth-child(2) .field-control select{max-width:100%}#ViewModeContainer .both .field-auto-thin:nth-child(3){row-gap:12px;flex-wrap:wrap}#ViewModeContainer .both .field-auto-thin:nth-child(3) .field-label{min-width:15%}#ViewModeContainer .both .field-auto-thin:nth-child(3) .field-auto-thin{display:flex;align-items:center;flex:1 0 100%}#ViewModeContainer .both .field-auto-thin:nth-child(3) .field-auto-thin #GanttStartDate{width:100%;font-size:2.6vw;margin-right:0}#ViewModeContainer .both .field-auto-thin:nth-child(3) button{flex:1}#ViewModeContainer .both .field-auto-thin:nth-child(3) button:last-child{margin-right:8px}#ViewModeContainer .both .field-auto-thin:nth-child(4){width:100%;padding-top:12px}#ViewModeContainer .both .field-auto-thin:nth-child(4) .field-control{width:100%}#ViewModeContainer .both .field-auto-thin:nth-child(4) .field-control .container-normal{width:100%;display:flex;align-items:center;column-gap:32px}#ViewModeContainer .both .field-auto-thin:nth-child(4) .field-control .container-normal #GanttPeriod\,ui{width:99%;margin-top:0}#ViewModeContainer .both .field-auto-thin:nth-child(4) .field-control .container-normal #GanttPeriod{margin:0}#GanttBody{max-height:70vh}#GanttBody text{font-size:2.6vw}#GanttBody .title text.summary{font-size:3vw}#GanttBody #GanttAxis{left:auto;position:sticky}}@media screen and (max-width:980px) and (min-width:0){#ViewModeContainer #Kamban.both .field-auto-thin select{font-size:2.6vw}#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(1),#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(2),#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(3),#ViewModeContainer #Kamban.both .field-auto-thin#KambanValueField{width:100%;flex:0 1 calc(50% - 8px);flex-wrap:wrap;display:flex;row-gap:0}#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(1) .field-label,#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(2) .field-label,#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(3) .field-label,#ViewModeContainer #Kamban.both .field-auto-thin#KambanValueField .field-label{width:100%}#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(1) select,#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(2) select,#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(3) select,#ViewModeContainer #Kamban.both .field-auto-thin#KambanValueField select{max-width:100%}#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(3){padding-top:4%}#ViewModeContainer #Kamban.both .field-auto-thin#KambanValueField{padding-top:4%}#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(5){display:block;width:100%;padding-top:4%}#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(5) .field-label{min-width:50%;margin-right:10px}#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(5) select{max-width:100%}#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(6),#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(7){width:calc(50% - 8px);padding-top:4%}#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(6) .container-normal,#ViewModeContainer #Kamban.both .field-auto-thin:nth-child(7) .container-normal{display:flex;align-items:center}#ViewModeContainer #Kamban.both #KambanBody #Grid tbody .kamban-row .kamban-container .kamban-item{overflow:hidden;padding:6px 30px 6px 5px;white-space:pre-line;touch-action:auto;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}#ViewModeContainer #Kamban.both #KambanBody #Grid tbody .kamban-row .kamban-container .kamban-item .ui-icon.ui-icon-pencil{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTJweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTJweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTMgMTcuNDZ2My4wNGMwIC4yOC4yMi41LjUuNWgzLjA0Yy4xMyAwIC4yNi0uMDUuMzUtLjE1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzLjE1IDE3LjFjLS4xLjEtLjE1LjIyLS4xNS4zNnpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz48L3N2Zz4=");background-position:center;width:36px;height:36px;filter:invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);margin-right:0;top:-7px;right:-11px}}@media screen and (max-width:980px) and (min-width:0){#RecordSwitchers{display:flex;align-items:center}#RecordSwitchers #CurrentIndex{height:7.5vw;display:flex;align-items:center}}@media screen and (max-width:980px) and (min-width:0){#Editor #RecordHeader .user{display:flex;align-items:center}#Editor #RecordHeader .user .ui-icon-person{margin-right:.6vw}}@media screen and (max-width:980px) and (min-width:0){#OutgoingMailDialog .field-wide{padding-bottom:5px}#OutgoingMailDialog .field-wide .field-label{width:auto}#OutgoingMailDialog .field-wide .field-control{float:none}#OutgoingMailDialog .field-wide .control-basket,#OutgoingMailDialog .field-wide .container-normal{margin-left:15vw}#OutgoingMailDialog textarea{height:20vw}}@media screen and (max-width:980px) and (min-width:0){.show-password{top:calc(50% - 10px);right:10px}#LoginFieldSet input[type=checkbox]{transform:scale(1.2)}#LoginFieldSet input,#LoginFieldSet select{font-size:4vw}#Users_RememberMeField .container-normal{display:flex;align-items:center}}@media screen and (max-width:980px) and (min-width:0){#Navigations.open{padding-top:18vw}}@media screen and (max-width:980px) and (min-width:0){#ViewModeContainer .field-auto-thin>.field-label{padding:7px 2vw 7px 0}#CrosstabValueField .field-control{width:70%}#Crosstab .field-auto-thin p{margin-right:0%}#ViewModeContainer #Crosstab .field-auto-thin{width:100%;flex:0 1 calc(100%);padding-top:1vw}#ViewModeContainer #Crosstab .field-auto-thin .field-label{width:30%}#ViewModeContainer #Crosstab .field-auto-thin .field-control{width:70%}#ViewModeContainer #Crosstab .field-auto-thin .field-control input[type='checkbox'],#ViewModeContainer #Crosstab .field-auto-thin .field-control .field-auto-thin input[type='checkbox']{width:4vw;height:4vw;margin-left:2px}#CrosstabBody .grid>thead>tr:first-child>th:not(:first-child),#KambanBody .grid>thead>tr:first-child>th:not(:first-child){white-space:nowrap}}@media screen and (max-width:980px) and (min-width:0){#ImportSettingsDialog .control-checkbox+label{margin:1.8vw 0 0 1vw}#ImportSettingsDialog .control-checkbox{margin:2vw 0 2vw 2px}#ImportSettingsDialog .control-textbox{height:7vw;line-height:6.5vw}#ImportSettingsDialog .command-center{padding:2vw 0}}@media screen and (max-width:980px) and (min-width:0){#ExportSelectorDialog .command-center{padding:2vw 0}}@media screen and (max-width:980px) and (min-width:0){#ViewModeContainer #Grid .datepicker{width:35vw;font-size:4vw}}@media screen and (max-width:980px) and (min-width:0){#ViewModeContainer .both #TimeSeriesValueField,#ViewModeContainer .both #TimeSeriesChartTypeField,#ViewModeContainer .both #TimeSeriesHorizontalAxisField{width:100%}#ViewModeContainer .both #TimeSeriesValueField .field-label,#ViewModeContainer .both #TimeSeriesChartTypeField .field-label,#ViewModeContainer .both #TimeSeriesHorizontalAxisField .field-label{min-width:30%}#ViewModeContainer .both .field-auto-thin:first-child,#ViewModeContainer .both .field-auto-thin:nth-child(2){flex:0 1 calc(100%)}#ViewModeContainer .both .field-auto-thin:first-child .field-label,#ViewModeContainer .both .field-auto-thin:nth-child(2) .field-label{min-width:30%}#ViewModeContainer .both .field-auto-thin select{max-width:100%}#ViewModeContainer .both .field-auto-thin>.field-control{min-width:68%}}
\ No newline at end of file
diff --git a/Implem.Pleasanter/wwwroot/scripts/responsive.js b/Implem.Pleasanter/wwwroot/scripts/responsive.js
index e265ca479..35b9a3ac7 100644
--- a/Implem.Pleasanter/wwwroot/scripts/responsive.js
+++ b/Implem.Pleasanter/wwwroot/scripts/responsive.js
@@ -1,16 +1,73 @@
-
-$p.openResponsiveMenu = function () {
+$p.openResponsiveMenu = function () {
var t = document.getElementById('Navigations');
var t2 = document.getElementById('navtgl');
+ const $body = $('body');
+ const $header = $('#Header');
if (t.classList.contains('open') == true) {
t.classList.remove('open');
t2.classList.remove('on');
+ $body.removeClass('is-showMenu');
+ if ($('.bg-overlay').length) {
+ $('.bg-overlay').remove();
+ }
} else {
t.classList.add('open');
t2.classList.add('on');
+ $body.addClass('is-showMenu');
+ if (!$('.bg-overlay').length) {
+ $header.append(``);
+ }
+ $('.bg-overlay').css({
+ 'display': 'block'
+ });
+ if ($('.bg-overlay').length) {
+ $('.bg-overlay').on('click', function () {
+ $p.openResponsiveMenu();
+ });
+ }
}
}
+$(document).ready(function () {
+ if ($p.responsive() && screen.width < 981) {
+ const heightHeader = $('#Header').length > 0 ? $('#Header').height() : 100;
+ $('#Application').css({
+ 'padding-top': `${heightHeader}px`
+ });
+ $(window).scroll(function () {
+ const scrollPosition = $(this).scrollTop();
+ if (scrollPosition === 0) {
+ $('#Header').css({
+ 'box-shadow': 'unset'
+ });
+ } else if (scrollPosition > heightHeader) {
+ const $headerDummyIndex = $('body thead .ui-widget-header');
+ $('#Header').css({
+ 'box-shadow': 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px'
+ });
+ if (window.location.pathname.includes('index')) {
+ $('body thead').css({
+ 'top': `${heightHeader}px`
+ });
+ $(document).ajaxComplete(function () {
+ if ($headerDummyIndex.length > 1) {
+ $($headerDummyIndex[1]).css({
+ 'top': '0px',
+ 'display': 'none'
+ });
+ } else {
+ $($headerDummyIndex[0]).css({
+ 'top': '0px',
+ 'display': 'none'
+ });
+ }
+ });
+ }
+ }
+ });
+ }
+});
+
$p.switchResponsive = function ($control) {
var redirect = 1;
var data = {};
@@ -44,4 +101,44 @@ if (screen.width < 981) {
$p.send($('#ReduceAggregations'));
}
+$(document).ready(function () {
+ function handleSMobileViewport() {
+ if ($('#MainCommandsContainer').length > 0) {
+ if ($('#Message').length > 0) {
+ let $heightMainCommand = $('#MainCommandsContainer').outerHeight();
+ let $heightFooter = $('#Footer').outerHeight();
+ $(document).ajaxComplete(function () {
+ setTimeout(function () {
+ $heightMainCommand = $('#MainCommandsContainer').outerHeight();
+ $heightFooter = $('#Footer').outerHeight();
+ $('#Message').css(
+ 'bottom', parseInt($heightMainCommand + $heightFooter)
+ );
+ }, 1);
+ });
+ $('#Message').css(
+ 'bottom', parseInt($heightMainCommand + $heightFooter)
+ );
+ }
+ }
+ }
+ if ($p.responsive() && screen.width < 981) {
+ handleSMobileViewport();
+ }
+ window.addEventListener('resize', function () {
+ if ($p.responsive() && screen.width < 981) {
+ handleSMobileViewport();
+ }
+ });
+});
+if ($p.responsive() && screen.width < 981) {
+ $('#ViewModeContainer').on('scroll', function () {
+ let scrollLeft = $(this).scrollLeft();
+ if ($(this).scrollLeft() > 0) {
+ $('body > thead').css({
+ 'left': `calc(5vw - ${scrollLeft}px)`
+ });
+ }
+ });
+}
diff --git a/Implem.Pleasanter/wwwroot/scripts/sitepackage.js b/Implem.Pleasanter/wwwroot/scripts/sitepackage.js
index 9d1a2e41d..6d35419c3 100644
--- a/Implem.Pleasanter/wwwroot/scripts/sitepackage.js
+++ b/Implem.Pleasanter/wwwroot/scripts/sitepackage.js
@@ -6,6 +6,9 @@
width: '520px'
});
}
+ if ($p.responsive() && screen.width < 981) {
+ $p.openResponsiveMenu();
+ }
}
$p.importSitePackage = function ($control) {
@@ -44,6 +47,9 @@ $p.openExportSitePackageDialog = function ($control) {
}
});
}
+ if ($p.responsive() && screen.width < 981) {
+ $p.openResponsiveMenu();
+ }
}
$p.exportSitePackage = function () {
diff --git a/Implem.Pleasanter/wwwroot/scripts/template.js b/Implem.Pleasanter/wwwroot/scripts/template.js
index 1f69f36b2..e0479fd32 100644
--- a/Implem.Pleasanter/wwwroot/scripts/template.js
+++ b/Implem.Pleasanter/wwwroot/scripts/template.js
@@ -1,5 +1,8 @@
$p.templates = function ($control) {
$p.send($control, 'MainForm');
+ if ($p.responsive() && screen.width < 981) {
+ $p.openResponsiveMenu();
+ }
}
$p.setTemplate = function () {
diff --git a/Implem.Pleasanter/wwwroot/scripts/viewmode.js b/Implem.Pleasanter/wwwroot/scripts/viewmode.js
index 797bc956c..dcff850ea 100644
--- a/Implem.Pleasanter/wwwroot/scripts/viewmode.js
+++ b/Implem.Pleasanter/wwwroot/scripts/viewmode.js
@@ -3,6 +3,9 @@
.replace('_action_', $control.attr('data-action').toLowerCase());
$p.ajax(url, 'post', $p.getData($control), $control);
history.pushState(null, null, url);
+ if ($p.responsive() && screen.width < 981) {
+ $p.openResponsiveMenu();
+ }
}
$p.changeViewSelector = function ($control) {
diff --git a/Implem.Pleasanter/wwwroot/styles/responsive.css b/Implem.Pleasanter/wwwroot/styles/responsive.css
index df66ede63..b1ad0bd02 100644
--- a/Implem.Pleasanter/wwwroot/styles/responsive.css
+++ b/Implem.Pleasanter/wwwroot/styles/responsive.css
@@ -62,11 +62,6 @@
margin: 10px 0px;
float: left;
}
- @media screen and (max-width: 600px) and (min-width: 0px) {
- #LoginFieldSet .field-wide {
- min-height: 10vw !important;
- }
- }
#StartGuide {
display: none;
}
@@ -74,7 +69,7 @@
word-break: break-all;
}
div[role="dialog"] {
- width: 100% !important;
+ width: 98% !important;
z-index: 999;
}
#EnterPriseBanner, #SupportBanner, #CasesBanner {
@@ -113,7 +108,10 @@
#ViewFilters>.field-auto-thin>.field-control { width: 100%;}
#ViewFilters>.field-auto-thin>.field-label { width: 30%; text-align: left;}
#ViewFilters>.field-auto-thin>.field-label+.field-control { width: 70%; }
- .ui-multiselect { width: 98%!important; height: 6vw; }
+ .ui-multiselect {
+ width: 100% !important;
+ height: 6vw;
+ }
.field-auto-thin input[type="checkbox"],
.field-auto-thin input[type="radio"] { height: 2.6vw; width: 2.6vw; margin-right: 1vw; }
@@ -156,8 +154,9 @@
.field-normal .control-text{ width: 100%; height: auto; padding: 1%; line-height: 1; }
.control-textbox { height: auto; }
-.ui-widget.ui-widget-content { background: #fff; font-size: 2.6vw; }
-
+.ui-widget.ui-widget-content {
+ font-size: 2.6vw;
+}
#Guide { font-size: 2.6vw; }
.alert-success,
@@ -171,14 +170,12 @@
.ui-tabs .ui-tabs-nav li {
margin-bottom: 1%;
padding-bottom: 0;
-border:1px solid #111;
-border-radius: 4px;
+ border-radius: 4px;
}
.ui-tabs .ui-tabs-nav li.ui-tabs-active {
margin-bottom: 1%;
padding-bottom: 0;
-border:1px solid #111;
-border-radius: 4px;
+ border-radius: 4px;
}
.message { bottom: 140px; }
}
@@ -188,7 +185,6 @@ border-radius: 4px;
body { min-width: 320px!important; }
#Header { height: auto; position: relative; }
- #Header #Logo { padding-bottom: 2%; }
#CorpLogo { float: none; width: 30%;}
#MainContainer { min-height: 100vh; }
@@ -239,16 +235,6 @@ transition: .5s;
background: none;
}
-#Header .ui-widget-header{
-background: #f3f3f3;
-color:#111;
-}
-
-.ui-widget-header{
-background: #817865;
-color:#fff;
-}
-
#NavigationMenu {
float: none;
margin-right: 0;
@@ -261,32 +247,28 @@ color:#fff;
color: #000;
}
-#NavigationMenu>li {
-width: 100%;
-height: auto;
-display: block;
-float: none;
-position: relative;
-color:#333;
-}
-
-#NavigationMenu>li>div {
-height: auto;
-text-align: left;
-line-height: 7vw;
-color: #333;
-font-weight: bold;
-}
-
-#NavigationMenu>li>div:hover { background:none;}
-
-#NavigationMenu>li>div>a {
-height: auto;
-display: block;
-color: #333;
-text-decoration: none;
-font-weight: bold;
-}
+ #NavigationMenu > li {
+ width: 100%;
+ height: auto;
+ display: block;
+ float: none;
+ position: relative;
+ }
+ #NavigationMenu > li > div {
+ height: auto;
+ text-align: left;
+ line-height: 7vw;
+ font-weight: bold;
+ }
+ #NavigationMenu > li > div:hover {
+ background: none;
+ }
+ #NavigationMenu > li > div > a {
+ height: auto;
+ display: block;
+ text-decoration: none;
+ font-weight: bold;
+ }
#NavigationMenu .menu {
width: 100%;
@@ -306,13 +288,6 @@ font-weight: normal;
text-decoration: none;
}
-.ui-widget.ui-widget-content {
-}
-
-.ui-widget-content {
-color: #333;
-}
-
.ui-menu .ui-menu-item {
border-top: 1px solid #d19405;
}
@@ -332,8 +307,6 @@ border: 1px solid #d19405;
width: 20vw;
height: 20vw;
text-align: center;
-background-color: white;
-border: solid 2px silver;
border-radius: 0.5vw;
float: none;
margin: 6%;
@@ -350,7 +323,6 @@ margin: 6%;
width: 20vw!important;
height: 20vw!important;
background: #fff;
-border: solid 2px #ffa500;
border-radius: 5px;}
@@ -358,8 +330,6 @@ border-radius: 5px;}
width: 8vw;
height: 3vw;
top: -3vw;
-background-color: #f8da4c;
-border: solid 2px #ffa500;
}
#SiteMenu .nav-site.sites.to-parent{
@@ -615,18 +585,1056 @@ overflow: hidden;
#KambanBody .grid>tbody td { min-width: 10vw; white-space: nowrap; }
}
-@media screen and (min-width: 981px) {
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Header {
+ padding: 0 calc(5vw);
+ }
+ #Header a#navtgl {
+ right: 5vw;
+ }
+ #Application,
+ #Footer {
+ padding-left: 5vw;
+ padding-right: 5vw;
+ }
+ #SiteMenu .nav-site {
+ margin: 5%;
+ }
+ :not(td) > div.field-control .container-normal {
+ margin-left: 0;
+ }
+ * {
+ line-height: 1.4;
+ }
+ .field-normal .control-textbox,
+ .field-normal .control-dropdown,
+ .field-normal .control-text, .field-control .control-textbox,
+ .field-control .control-dropdown,
+ .field-control .control-text, .container-normal .control-textbox,
+ .container-normal .control-dropdown,
+ .container-normal .control-text {
+ min-height: unset;
+ height: 6vw;
+ line-height: 6vw;
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+ body {
+ font-size: 16px;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #HeaderTitle {
+ font-size: 16px;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ .command-center {
+ padding: 0;
+ }
+ .ui-dialog .ui-dialog-titlebar-close {
+ top: 0;
+ bottom: 0;
+ width: 5vw;
+ height: 5vw;
+ margin: auto 0;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewSelector {
+ font-size: 2.6vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Logo a {
+ align-items: center;
+ display: flex;
+ }
+ #Logo #ProductLogo {
+ font-size: 18px;
+ padding-left: 8px;
+ }
+ #CorpLogo {
+ float: none;
+ height: calc(8vw + 10px);
+ width: unset;
+ margin-top: 0;
+ }
+}
-.grid>thead>tr:first-child>th:first-child {width: 20px;}
-#CrosstabBody .grid>thead>tr:first-child>th:first-child,
-#KambanBody .grid>thead>tr:first-child>th:first-child {width: auto;}
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Editor .field-control .container-normal {
+ width: calc(100% - 20px);
+ }
+ #Editor .field-control .ui-icon.ui-icon-clock.current-time {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjEycHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjwvZz48Zz48Zz48Zz48cGF0aCBkPSJNMTIsMkM2LjUsMiwyLDYuNSwyLDEyczQuNSwxMCwxMCwxMHMxMC00LjUsMTAtMTBTMTcuNSwyLDEyLDJ6IE0xNi4yLDE2LjJMMTEsMTNWN2gxLjV2NS4ybDQuNSwyLjdMMTYuMiwxNi4yeiIvPjwvZz48L2c+PC9nPjwvc3ZnPg==");
+ background-position: center;
+ width: 12px;
+ height: 12px;
+ filter: invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);
+ top: calc(3vw - 3.5px);
+ right: -16px;
+ }
+ #Editor .field-control .ui-icon.ui-icon-person.current-user {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTJweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTJweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMiAxMmMyLjIxIDAgNC0xLjc5IDQtNHMtMS43OS00LTQtNC00IDEuNzktNCA0IDEuNzkgNCA0IDR6bTAgMmMtMi42NyAwLTggMS4zNC04IDR2MmgxNnYtMmMwLTIuNjYtNS4zMy00LTgtNHoiLz48L3N2Zz4=");
+ background-position: center;
+ width: 12px;
+ height: 12px;
+ filter: invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);
+ top: calc(3vw - 3.5px);
+ right: -16px;
+ }
+}
-.grid>thead>tr:first-child>th:not(:first-child) { white-space: nowrap; }
-#CrosstabBody .grid>thead>tr:first-child>th:not(:first-child),
-#KambanBody .grid>thead>tr:first-child>th:not(:first-child) { white-space: inherit; }
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #FieldSetAddressBook #OutgoingMailDestinationForm .container-left {
+ width: 38vw;
+ }
+ #FieldSetAddressBook #OutgoingMailDestinationForm .container-right .command-left {
+ float: unset;
+ padding: 0;
+ }
+ #FieldSetAddressBook #OutgoingMailDestinationForm .container-right .command-left button {
+ margin: 2px;
+ }
+ #FieldSetAddressBook #OutgoingMailDestinationForm .container-right .container-selectable .wrapper {
+ height: 40vw;
+ }
+ #FieldSetAddressBook #OutgoingMailDestinationForm .container-right > * {
+ margin-left: 40vw;
+ }
+}
-.grid>tbody>tr td:not(:first-child) {white-space: nowrap; min-width: 40px;}
-#CrosstabBody .grid>tbody>tr td:not(:first-child),
-#KambanBody .grid>tbody>tr td:not(:first-child) { white-space: inherit; min-width:auto; }
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Issues_WorkValue {
+ width: 100px;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ body::before {
+ content: '';
+ position: fixed;
+ width: 5vw;
+ height: 50vh;
+ top: 0;
+ left: 0;
+ background: white;
+ z-index: 200;
+ }
+ body::after {
+ content: '';
+ position: fixed;
+ width: 5vw;
+ height: 50vh;
+ top: 0;
+ right: 0;
+ background: white;
+ z-index: 700;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Users_LoginId,
+ #Users_Password {
+ height: 40px;
+ }
+ #LoginMessage span {
+ font-size: 3.5vw;
+ }
+ #PortalLink {
+ font-size: 3.5vw;
+ top: 3vw;
+ }
+ #LoginFieldSet {
+ margin: 65px auto 20px auto;
+ }
+ #LoginFieldSet input[type=checkbox] {
+ margin: auto 0;
+ margin-left: 1.2vw;
+ }
+ #LoginFieldSet button {
+ margin-top: 0;
+ }
+ #LoginFieldSet .field-wide,
+ #LoginFieldSet .field-normal {
+ margin: 0px 0px;
+ }
+ #LoginFieldSet .field-normal .control-checkbox + label {
+ margin: auto 0;
+ margin-left: 4vw;
+ padding: 0;
+ }
+ #Logins .field-label {
+ width: 100%;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Editor .field-markdown > .field-label > label {
+ font-weight: bold;
+ }
+ #Editor .field-control .unit {
+ font-size: 2.6vw;
+ padding-top: calc((18px - 1.4em) / 2);
+ }
+ #Editor .ui-spinner .control-spinner {
+ height: 100%;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #GridCheckAll {
+ margin-top: 0;
+ }
+ label[for="GridCheckAll"] {
+ margin: 0;
+ }
+ #Footer {
+ font-size: 2.8vw;
+ height: auto;
+ }
+ #MainCommandsContainer {
+ bottom: calc(2.8vw * 1.4 + 10px);
+ }
+ body > thead > tr {
+ font-size: 0.75em;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #SiteImageSettingsEditor .field-auto-thin, #GridSettingsEditor .field-auto-thin, #FiltersSettingsEditor .field-auto-thin, #EditorSettingsEditor .field-auto-thin,
+ #LinksSettingsEditor .field-auto-thin, #HistoriesSettingsEditor .field-auto-thin, #FormulasSettingsEditor .field-auto-thin, #ViewsSettingsEditor .field-auto-thin,
+ #ImportsSettingsEditor .field-auto-thin, #ExportsSettingsEditor .field-auto-thin, #CalendarSettingsEditor .field-auto-thin, #CrosstabSettingsEditor .field-auto-thin,
+ #GanttSettingsEditor .field-auto-thin, #BurnDownSettingsEditor .field-auto-thin, #TimeSeriesSettingsEditor .field-auto-thin, #KambanSettingsEditor .field-auto-thin,
+ #ImageLibSettingsEditor .field-auto-thin, #SearchSettingsEditor .field-auto-thin, #StylesSettingsEditor .field-auto-thin, #ScriptsSettingsEditor .field-auto-thin,
+ #PublishSettingsEditor .field-auto-thin, #FieldSetSiteAccessControl .field-auto-thin {
+ padding-right: 0;
+ height: auto;
+ display: flex;
+ align-items: center;
+ clear: both;
+ }
+ #SiteImageSettingsEditor .field-auto-thin .container-normal, #GridSettingsEditor .field-auto-thin .container-normal, #FiltersSettingsEditor .field-auto-thin .container-normal, #EditorSettingsEditor .field-auto-thin .container-normal,
+ #LinksSettingsEditor .field-auto-thin .container-normal, #HistoriesSettingsEditor .field-auto-thin .container-normal, #FormulasSettingsEditor .field-auto-thin .container-normal, #ViewsSettingsEditor .field-auto-thin .container-normal,
+ #ImportsSettingsEditor .field-auto-thin .container-normal, #ExportsSettingsEditor .field-auto-thin .container-normal, #CalendarSettingsEditor .field-auto-thin .container-normal, #CrosstabSettingsEditor .field-auto-thin .container-normal,
+ #GanttSettingsEditor .field-auto-thin .container-normal, #BurnDownSettingsEditor .field-auto-thin .container-normal, #TimeSeriesSettingsEditor .field-auto-thin .container-normal, #KambanSettingsEditor .field-auto-thin .container-normal,
+ #ImageLibSettingsEditor .field-auto-thin .container-normal, #SearchSettingsEditor .field-auto-thin .container-normal, #StylesSettingsEditor .field-auto-thin .container-normal, #ScriptsSettingsEditor .field-auto-thin .container-normal,
+ #PublishSettingsEditor .field-auto-thin .container-normal, #FieldSetSiteAccessControl .field-auto-thin .container-normal {
+ width: 100%;
+ }
+ #SiteImageSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #GridSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #FiltersSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #EditorSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label,
+ #LinksSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #HistoriesSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #FormulasSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #ViewsSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label,
+ #ImportsSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #ExportsSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #CalendarSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #CrosstabSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label,
+ #GanttSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #BurnDownSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #TimeSeriesSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #KambanSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label,
+ #ImageLibSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #SearchSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #StylesSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #ScriptsSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label,
+ #PublishSettingsEditor .field-auto-thin .container-normal .control-checkbox ~ label, #FieldSetSiteAccessControl .field-auto-thin .container-normal .control-checkbox ~ label {
+ display: unset;
+ float: unset;
+ width: auto;
+ }
+ #SiteImageSettingsEditor .field-auto-thin .field-label ~ .field-control, #GridSettingsEditor .field-auto-thin .field-label ~ .field-control, #FiltersSettingsEditor .field-auto-thin .field-label ~ .field-control, #EditorSettingsEditor .field-auto-thin .field-label ~ .field-control,
+ #LinksSettingsEditor .field-auto-thin .field-label ~ .field-control, #HistoriesSettingsEditor .field-auto-thin .field-label ~ .field-control, #FormulasSettingsEditor .field-auto-thin .field-label ~ .field-control, #ViewsSettingsEditor .field-auto-thin .field-label ~ .field-control,
+ #ImportsSettingsEditor .field-auto-thin .field-label ~ .field-control, #ExportsSettingsEditor .field-auto-thin .field-label ~ .field-control, #CalendarSettingsEditor .field-auto-thin .field-label ~ .field-control, #CrosstabSettingsEditor .field-auto-thin .field-label ~ .field-control,
+ #GanttSettingsEditor .field-auto-thin .field-label ~ .field-control, #BurnDownSettingsEditor .field-auto-thin .field-label ~ .field-control, #TimeSeriesSettingsEditor .field-auto-thin .field-label ~ .field-control, #KambanSettingsEditor .field-auto-thin .field-label ~ .field-control,
+ #ImageLibSettingsEditor .field-auto-thin .field-label ~ .field-control, #SearchSettingsEditor .field-auto-thin .field-label ~ .field-control, #StylesSettingsEditor .field-auto-thin .field-label ~ .field-control, #ScriptsSettingsEditor .field-auto-thin .field-label ~ .field-control,
+ #PublishSettingsEditor .field-auto-thin .field-label ~ .field-control, #FieldSetSiteAccessControl .field-auto-thin .field-label ~ .field-control {
+ margin-left: 10px;
+ }
+ #SiteImageSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #GridSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #FiltersSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #EditorSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal,
+ #LinksSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #HistoriesSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #FormulasSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #ViewsSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal,
+ #ImportsSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #ExportsSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #CalendarSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #CrosstabSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal,
+ #GanttSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #BurnDownSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #TimeSeriesSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #KambanSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal,
+ #ImageLibSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #SearchSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #StylesSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #ScriptsSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal,
+ #PublishSettingsEditor .field-auto-thin .field-label ~ .field-control .container-normal, #FieldSetSiteAccessControl .field-auto-thin .field-label ~ .field-control .container-normal {
+ width: 100%;
+ }
+ #FieldSetGeneral .field-control .container-normal .control-checkbox ~ label {
+ width: auto;
+ }
+ #GridSettingsEditor #GridEditorType {
+ max-width: unset;
+ }
+ #SiteImageSettingsEditor #SiteImage {
+ width: 100%;
+ height: 7vw;
+ }
+ #SiteImageSettingsEditor #SetSiteImage {
+ margin-right: 0;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Aggregations {
+ display: flex;
+ flex-wrap: wrap;
+ row-gap: 5px;
+ justify-content: flex-start;
+ align-items: center;
+ }
+ #Aggregations span.label {
+ flex: 1 0 auto;
+ margin: 0;
+ text-align: center;
+ align-self: stretch;
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+ }
+ #Aggregations span.data {
+ flex: 1 0 auto;
+ margin: 0;
+ align-self: stretch;
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+ height: auto;
+ }
+ #Aggregations span.data.no-choice {
+ flex-basis: auto;
+ align-self: stretch;
+ }
+ #Aggregations span.data.link span {
+ font-weight: bold;
+ }
+ #Aggregations #ReduceAggregations {
+ width: 100%;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewModeContainer .grid {
+ vertical-align: middle;
+ }
+ #ViewModeContainer .grid tr td:first-child {
+ padding: 6px;
+ }
+ input[type='checkbox'], .field-auto-thin input[type='checkbox'] {
+ width: 3vw;
+ height: 3vw;
+ }
+ .field-auto-thin input[type='checkbox'] + label {
+ padding-top: 2px;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #SearchField #Search {
+ font-size: 3vw;
+ width: 100%;
+ }
+ #SearchField #Search::placeholder {
+ font-size: 3vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewFilters #ViewFilters_Reset {
+ margin-left: auto;
+ margin-right: 0;
+ }
+ #ViewFilters .field-auto-thin {
+ width: 50%;
+ }
+ #ViewFilters .field-auto-thin .field-control .container-normal {
+ display: flex;
+ align-items: center;
+ }
+ #ViewFilters .field-auto-thin .field-control .container-normal input[type='checkbox'] {
+ margin-right: 4px;
+ margin-top: 1px;
+ }
+ #ViewFilters .field-auto-thin .field-control .container-normal .ui-widget.ui-state-default.ui-multiselect, #ViewFilters .field-auto-thin .field-control .container-normal .control-textbox {
+ height: 6vw;
+ font-size: 2.6vw;
+ }
+ #ViewFilters #ViewFilters_SearchField {
+ width: 100%;
+ }
+ #ViewFilters #ViewFilters_SearchField p.field-label {
+ width: 17%;
+ }
+ #ViewFilters #ViewFilters_SearchField .field-control {
+ width: 100%;
+ }
+ #ViewFilters > .field-auto-thin:nth-child(odd) {
+ padding-right: 2px;
+ }
+ #ViewFilters > .field-auto-thin:nth-child(even) {
+ padding-left: 2px;
+ }
+ .ui-multiselect-menu .ui-helper-reset {
+ position: relative;
+ }
+ .ui-multiselect-menu .ui-helper-reset li {
+ width: 100%;
+ }
+ .ui-multiselect-menu .ui-helper-reset li > label span {
+ position: relative;
+ top: -4px;
+ }
+ .ui-multiselect-menu .ui-helper-reset li .ui-multiselect-all,
+ .ui-multiselect-menu .ui-helper-reset li .ui-multiselect-none {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ }
+ .ui-multiselect-menu .ui-helper-reset li .ui-multiselect-all span:last-child,
+ .ui-multiselect-menu .ui-helper-reset li .ui-multiselect-none span:last-child {
+ padding-left: 10px;
+ }
+ .ui-multiselect-menu .ui-helper-reset li .ui-multiselect-close {
+ position: absolute;
+ top: 8px;
+ right: 0;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #EditorTabsContainer .legend.applied {
+ display: flex;
+ align-items: center;
+ font-weight: bold;
+ }
+ #EditorTabsContainer #PermissionEditor .field-vertical:first-child > .field-control {
+ border-bottom: 1px solid #d19405;
+ padding-bottom: 2vw;
+ }
+ #EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left {
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ width: 100%;
+ }
+ #EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left #SearchPermissionElements {
+ margin: 2px 1vw 2px 6vw;
+ height: 7vw;
+ }
+ #EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left button {
+ align-self: stretch;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ white-space: nowrap;
+ }
+ #EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left button .ui-icon {
+ position: relative;
+ top: 0.5vw;
+ width: 18px;
+ height: 18px;
+ margin-right: 0px;
+ }
+ #EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left #OpenPermissionsDialog,
+ #EditorTabsContainer #PermissionEditor .field-control .container-selectable .command-left #DeletePermissions {
+ line-height: 1.5;
+ }
+ #EditorTabsContainer #PermissionEditor .field-control .container-selectable #CurrentPermissionsWrapper {
+ min-height: 15vw;
+ }
+}
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ thead > tr.ui-widget-header th div > span {
+ font-size: 2.8vw;
+ white-space: nowrap;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #EditorTabsContainer .field-control .container-normal .ui-icon.ui-icon-pencil.button-edit-markdown {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTJweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTJweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6Ii8+PC9zdmc+");
+ background-position: center;
+ width: 12px;
+ height: 12px;
+ filter: invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);
+ top: 8px;
+ right: 4px;
+ }
+ #EditorTabsContainer .field-control .container-normal .ui-icon.ui-icon-image.button-upload-image {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTJweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTJweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMSAxOVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMy41bDIuNSAzLjAxTDE0LjUgMTJsNC41IDZINWwzLjUtNC41eiIvPjwvc3ZnPg==");
+ background-position: center;
+ width: 12px;
+ height: 12px;
+ filter: invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);
+ position: relative;
+ left: -1px;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #EditorTabsContainer {
+ overflow: auto;
+ }
+ #EditorComments {
+ padding: 0;
+ margin: 0;
+ }
+ #EditorComments #CommentField .control-textarea {
+ height: 15vw;
+ }
+ #EditorComments #CommentField .control-textarea::placeholder {
+ font-size: 2.6vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ .is-showMenu {
+ overflow: hidden;
+ }
+ .is-showMenu body {
+ position: fixed;
+ overflow: hidden;
+ }
+ .bg-overlay {
+ background: rgba(0, 0, 0, 0.5);
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 301;
+ width: 100%;
+ height: 100%;
+ display: none;
+ }
+ #MainContainer {
+ overflow: hidden;
+ }
+ header#Header {
+ position: fixed;
+ top: 0;
+ z-index: 1000;
+ background-color: #fff;
+ transition: all 0.5s ease;
+ }
+ header#Header a#navtgl {
+ top: 8px;
+ z-index: 1000;
+ transition: all 0.5s ease;
+ }
+ header#Header a#navtgl::after {
+ transition: all 0.5s ease;
+ }
+ header#Header a#navtgl.on {
+ transition: all 0.5s ease;
+ position: fixed;
+ }
+ header#Header a#navtgl.on::before {
+ transition: all 0.5s ease;
+ border-top: none;
+ transform: translate(12.5%, 50%) rotate(50deg);
+ }
+ header#Header a#navtgl.on::after {
+ transition: all 0.5s ease;
+ transform: translate(12.5%, 0%) rotate(126deg);
+ }
+ #Navigations {
+ transition: all 0.5s ease;
+ max-height: 100vh;
+ height: 100vh;
+ position: absolute;
+ top: 0;
+ right: -1000px;
+ z-index: 999;
+ padding: 5%;
+ width: 70%;
+ padding-top: 112px;
+ opacity: 0;
+ }
+ #Navigations.open {
+ opacity: 1;
+ padding-top: 112px;
+ right: 0;
+ height: 100vh;
+ margin: 0;
+ position: fixed;
+ top: 0;
+ z-index: 1000;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #OutgoingMailsForm {
+ width: 100%;
+ font-size: 2.6vw;
+ }
+ #OutgoingMailsForm .item h3.title-header {
+ height: auto;
+ }
+ #OutgoingMailsForm .item .content {
+ padding: 0.2em;
+ margin: 0;
+ }
+ #OutgoingMailsForm .item .content .field-auto,
+ #OutgoingMailsForm .item .content .field-auto-thin {
+ width: 100%;
+ margin-right: 0;
+ padding-right: 0;
+ padding-bottom: 0;
+ display: flex;
+ flex-direction: column;
+ height: auto;
+ }
+ #OutgoingMailsForm .item .content .field-auto .field-label,
+ #OutgoingMailsForm .item .content .field-auto-thin .field-label {
+ float: none;
+ padding: 7px 7px 7px 0;
+ width: 100%;
+ text-align: left;
+ display: block;
+ }
+ #OutgoingMailsForm .item .content .field-auto .field-label label,
+ #OutgoingMailsForm .item .content .field-auto-thin .field-label label {
+ font-weight: bold;
+ }
+ #OutgoingMailsForm .item .content .field-auto .field-control,
+ #OutgoingMailsForm .item .content .field-auto-thin .field-control {
+ float: none;
+ width: 100%;
+ }
+ #OutgoingMailsForm .item .content .field-auto .field-control .container-normal,
+ #OutgoingMailsForm .item .content .field-auto-thin .field-control .container-normal {
+ margin-right: 0;
+ width: 100%;
+ }
+ #OutgoingMailsForm .item .content .field-auto .field-control .container-normal .control-text,
+ #OutgoingMailsForm .item .content .field-auto-thin .field-control .container-normal .control-text {
+ min-height: 0;
+ height: auto;
+ }
+ #OutgoingMailsForm .item .content .field-auto-thin {
+ margin-left: 0;
+ }
+ #OutgoingMailsForm .item .content .field-wide {
+ display: flex;
+ flex-direction: column;
+ padding: 0;
+ }
+ #OutgoingMailsForm .item .content .field-wide .field-label {
+ padding: 7px 0;
+ }
+ #OutgoingMailsForm .item .content .field-wide .field-control .container-normal {
+ margin-right: 0;
+ width: 100%;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #SiteMenu li.ui-sortable-handle {
+ touch-action: unset;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ .message .close {
+ top: unset;
+ bottom: calc(50% - 8px);
+ margin: auto;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #EditorComments #CommentField .ui-icon.ui-icon-image.button-upload-image {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTJweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTJweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMSAxOVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMy41bDIuNSAzLjAxTDE0LjUgMTJsNC41IDZINWwzLjUtNC41eiIvPjwvc3ZnPg==");
+ background-position: center;
+ width: 12px;
+ height: 12px;
+ filter: invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);
+ position: relative;
+ left: 0px;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Navigations.open {
+ overflow-y: scroll;
+ }
+ #Navigations #NavigationMenu #NewMenuContainer {
+ background: unset;
+ border: none;
+ }
+ #Navigations #NavigationMenu #NewMenuContainer a {
+ line-height: 7vw;
+ }
+ #Navigations #NavigationMenu li.sub-menu .ui-menu-item .ui-menu-item-wrapper {
+ font-size: 3vw;
+ padding-left: 6vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Editor .field-normal .field-control .container-normal input[type='checkbox'].control-checkbox {
+ position: relative;
+ margin-right: 6px;
+ margin-top: .3vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Editor #EditorTabsContainer .field-normal, #Editor #EditorTabsContainer .field-wide, #Editor #EditorTabsContainer .field-markdown {
+ display: inline-block;
+ margin-top: 8px;
+ padding-bottom: 0;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewModeContainer #Calendar.both select {
+ font-size: 2.6vw;
+ }
+ #ViewModeContainer #Calendar.both .field-label {
+ min-width: 30%;
+ margin-right: 15px;
+ }
+ #ViewModeContainer #Calendar.both .field-auto-thin .field-control .container-normal {
+ display: flex;
+ align-items: center;
+ }
+ #ViewModeContainer #Calendar.both .field-auto-thin:nth-child(3) {
+ flex: 0 1 calc(64%);
+ }
+ #ViewModeContainer #Calendar.both .field-auto-thin:nth-child(3) .field-label {
+ min-width: 22%;
+ }
+ #ViewModeContainer #Calendar.both .field-auto-thin:nth-child(3) .field-control {
+ width: 74%;
+ }
+ #ViewModeContainer #Calendar.both .field-auto-thin:nth-child(4) {
+ flex: 0 1 calc(33% + 1px);
+ padding-top: 2%;
+ }
+ #ViewModeContainer #Calendar.both .field-auto-thin:nth-child(4) .field-control .container-normal {
+ justify-content: flex-end;
+ }
+ #ViewModeContainer #Calendar.both .field-auto-thin:nth-child(4) .field-control .container-normal #CalendarDate {
+ margin-right: 0;
+ width: 98%;
+ font-size: 2.6vw;
+ }
+ #ViewModeContainer #Calendar.both button {
+ flex: 1 0 calc((100% / 3) - 32px);
+ margin: 2% 10px 2% 10px;
+ }
+ #ViewModeContainer .grid.fixed {
+ width: 100%;
+ }
+ #ViewModeContainer .grid.fixed tbody tr td.container .item {
+ touch-action: auto;
+ min-height: 50px;
+ }
+ #ViewModeContainer .grid.fixed tbody tr td.container .item .title .ui-icon.ui-icon-pencil {
+ margin-right: 5px;
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMzBweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMzBweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6Ii8+PC9zdmc+");
+ background-position: center;
+ width: 36px;
+ height: 36px;
+ filter: invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);
+ }
+ #ViewModeContainer .grid.fixed tbody tr td.container .item .connection {
+ min-height: 50px;
+ }
+ #ViewModeContainer .grid.fixed tbody tr td.container .dummy {
+ height: 50px;
+ }
+ #ViewModeContainer .grid.fixed tbody tr td.container:first-child .item {
+ margin-top: 0;
+ margin-bottom: 5px;
+ }
+ #ViewModeContainer .grid.fixed tbody tr td.container:not(:first-child) .item {
+ margin-top: 5px;
+ }
+ thead th.calendar-header {
+ overflow-x: hidden;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewModeContainer .both {
+ column-gap: 16px;
+ }
+ #ViewModeContainer .both .field-auto-thin:first-child, #ViewModeContainer .both .field-auto-thin:nth-child(2) {
+ flex: 0 1 calc(50% - 8px);
+ }
+ #ViewModeContainer .both .field-auto-thin:first-child .field-control, #ViewModeContainer .both .field-auto-thin:nth-child(2) .field-control {
+ flex: 1;
+ }
+ #ViewModeContainer .both .field-auto-thin:first-child .field-control select, #ViewModeContainer .both .field-auto-thin:nth-child(2) .field-control select {
+ max-width: 100%;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(3) {
+ row-gap: 12px;
+ flex-wrap: wrap;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(3) .field-label {
+ min-width: 15%;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(3) .field-auto-thin {
+ display: flex;
+ align-items: center;
+ flex: 1 0 100%;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(3) .field-auto-thin #GanttStartDate {
+ width: 100%;
+ font-size: 2.6vw;
+ margin-right: 0;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(3) button {
+ flex: 1;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(3) button:last-child {
+ margin-right: 8px;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(4) {
+ width: 100%;
+ padding-top: 12px;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(4) .field-control {
+ width: 100%;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(4) .field-control .container-normal {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ column-gap: 32px;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(4) .field-control .container-normal #GanttPeriod\,ui {
+ width: 99%;
+ margin-top: 0;
+ }
+ #ViewModeContainer .both .field-auto-thin:nth-child(4) .field-control .container-normal #GanttPeriod {
+ margin: 0;
+ }
+ #GanttBody {
+ max-height: 70vh;
+ }
+ #GanttBody text {
+ font-size: 2.6vw;
+ }
+ #GanttBody .title text.summary {
+ font-size: 3vw;
+ }
+ #GanttBody #GanttAxis {
+ left: auto;
+ position: sticky;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewModeContainer #Kamban.both .field-auto-thin select {
+ font-size: 2.6vw;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(1), #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(2), #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(3), #ViewModeContainer #Kamban.both .field-auto-thin#KambanValueField {
+ width: 100%;
+ flex: 0 1 calc(50% - 8px);
+ flex-wrap: wrap;
+ display: flex;
+ row-gap: 0;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(1) .field-label, #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(2) .field-label, #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(3) .field-label, #ViewModeContainer #Kamban.both .field-auto-thin#KambanValueField .field-label {
+ width: 100%;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(1) select, #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(2) select, #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(3) select, #ViewModeContainer #Kamban.both .field-auto-thin#KambanValueField select {
+ max-width: 100%;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(3) {
+ padding-top: 4%;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin#KambanValueField {
+ padding-top: 4%;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(5) {
+ display: block;
+ width: 100%;
+ padding-top: 4%;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(5) .field-label {
+ min-width: 50%;
+ margin-right: 10px;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(5) select {
+ max-width: 100%;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(6), #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(7) {
+ width: calc(50% - 8px);
+ padding-top: 4%;
+ }
+ #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(6) .container-normal, #ViewModeContainer #Kamban.both .field-auto-thin:nth-child(7) .container-normal {
+ display: flex;
+ align-items: center;
+ }
+ #ViewModeContainer #Kamban.both #KambanBody #Grid tbody .kamban-row .kamban-container .kamban-item {
+ overflow: hidden;
+ padding: 6px 30px 6px 5px;
+ white-space: pre-line;
+ touch-action: auto;
+ display: -webkit-box;
+ -webkit-line-clamp: 1;
+ -webkit-box-orient: vertical;
+ }
+ #ViewModeContainer #Kamban.both #KambanBody #Grid tbody .kamban-row .kamban-container .kamban-item .ui-icon.ui-icon-pencil {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTJweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTJweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTMgMTcuNDZ2My4wNGMwIC4yOC4yMi41LjUuNWgzLjA0Yy4xMyAwIC4yNi0uMDUuMzUtLjE1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzLjE1IDE3LjFjLS4xLjEtLjE1LjIyLS4xNS4zNnpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz48L3N2Zz4=");
+ background-position: center;
+ width: 36px;
+ height: 36px;
+ filter: invert(69%) sepia(77%) saturate(3818%) hue-rotate(12deg) brightness(97%) contrast(96%);
+ margin-right: 0;
+ top: -7px;
+ right: -11px;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #RecordSwitchers {
+ display: flex;
+ align-items: center;
+ }
+ #RecordSwitchers #CurrentIndex {
+ height: 7.5vw;
+ display: flex;
+ align-items: center;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0) {
+ #Editor #RecordHeader .user {
+ display: flex;
+ align-items: center;
+ }
+ #Editor #RecordHeader .user .ui-icon-person {
+ margin-right: 0.6vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #OutgoingMailDialog .field-wide {
+ padding-bottom: 5px;
+ }
+ #OutgoingMailDialog .field-wide .field-label {
+ width: auto;
+ }
+ #OutgoingMailDialog .field-wide .field-control {
+ float: none;
+ }
+ #OutgoingMailDialog .field-wide .control-basket,
+ #OutgoingMailDialog .field-wide .container-normal {
+ margin-left: 15vw;
+ }
+ #OutgoingMailDialog textarea {
+ height: 20vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ .show-password {
+ top: calc(50% - 10px);
+ right: 10px;
+ }
+ #LoginFieldSet input[type=checkbox] {
+ transform: scale(1.2);
+ }
+ #LoginFieldSet input,
+ #LoginFieldSet select {
+ font-size: 4vw;
+ }
+ #Users_RememberMeField .container-normal {
+ display: flex;
+ align-items: center;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #Navigations.open {
+ padding-top: 18vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewModeContainer .field-auto-thin > .field-label {
+ padding: 7px 2vw 7px 0;
+ }
+ #CrosstabValueField .field-control {
+ width: 70%;
+ }
+ #Crosstab .field-auto-thin p {
+ margin-right: 0%;
+ }
+ #ViewModeContainer #Crosstab .field-auto-thin {
+ width: 100%;
+ flex: 0 1 calc(100%);
+ padding-top: 1vw;
+ }
+ #ViewModeContainer #Crosstab .field-auto-thin .field-label {
+ width: 30%;
+ }
+ #ViewModeContainer #Crosstab .field-auto-thin .field-control {
+ width: 70%;
+ }
+ #ViewModeContainer #Crosstab .field-auto-thin .field-control input[type='checkbox'],
+ #ViewModeContainer #Crosstab .field-auto-thin .field-control .field-auto-thin input[type='checkbox'] {
+ width: 4vw;
+ height: 4vw;
+ margin-left: 2px;
+ }
+ #CrosstabBody .grid > thead > tr:first-child > th:not(:first-child),
+ #KambanBody .grid > thead > tr:first-child > th:not(:first-child) {
+ white-space: nowrap;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ImportSettingsDialog .control-checkbox + label {
+ margin: 1.8vw 0 0 1vw;
+ }
+ #ImportSettingsDialog .control-checkbox {
+ margin: 2vw 0 2vw 2px;
+ }
+ #ImportSettingsDialog .control-textbox {
+ height: 7vw;
+ line-height: 6.5vw;
+ }
+ #ImportSettingsDialog .command-center {
+ padding: 2vw 0;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ExportSelectorDialog .command-center {
+ padding: 2vw 0;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewModeContainer #Grid .datepicker {
+ width: 35vw;
+ font-size: 4vw;
+ }
+}
+
+@media screen and (max-width: 980px) and (min-width: 0px) {
+ #ViewModeContainer .both #TimeSeriesValueField,
+ #ViewModeContainer .both #TimeSeriesChartTypeField,
+ #ViewModeContainer .both #TimeSeriesHorizontalAxisField {
+ width: 100%;
+ }
+ #ViewModeContainer .both #TimeSeriesValueField .field-label,
+ #ViewModeContainer .both #TimeSeriesChartTypeField .field-label,
+ #ViewModeContainer .both #TimeSeriesHorizontalAxisField .field-label {
+ min-width: 30%;
+ }
+ #ViewModeContainer .both .field-auto-thin:first-child,
+ #ViewModeContainer .both .field-auto-thin:nth-child(2) {
+ flex: 0 1 calc(100%);
+ }
+ #ViewModeContainer .both .field-auto-thin:first-child .field-label,
+ #ViewModeContainer .both .field-auto-thin:nth-child(2) .field-label {
+ min-width: 30%;
+ }
+ #ViewModeContainer .both .field-auto-thin select {
+ max-width: 100%;
+ }
+ #ViewModeContainer .both .field-auto-thin > .field-control {
+ min-width: 68%;
+ }
}
\ No newline at end of file
diff --git a/Implem.TestAutomation/implem.TestAutomation.csproj b/Implem.TestAutomation/implem.TestAutomation.csproj
index 5c81a3fcf..8629e360a 100644
--- a/Implem.TestAutomation/implem.TestAutomation.csproj
+++ b/Implem.TestAutomation/implem.TestAutomation.csproj
@@ -4,9 +4,9 @@
Exe
net6.0
Copyright © Implem Inc 2014 - 2023
- 1.3.46.1
- 1.3.46.1
- 1.3.46.1
+ 1.3.47.0
+ 1.3.47.0
+ 1.3.47.0
Linux
diff --git a/Rds/Implem.IRds/Implem.IRds.csproj b/Rds/Implem.IRds/Implem.IRds.csproj
index 378a29b06..868e0ea86 100644
--- a/Rds/Implem.IRds/Implem.IRds.csproj
+++ b/Rds/Implem.IRds/Implem.IRds.csproj
@@ -3,9 +3,9 @@
net6.0
Copyright © Implem Inc 2014 - 2023
- 1.3.46.1
- 1.3.46.1
- 1.3.46.1
+ 1.3.47.0
+ 1.3.47.0
+ 1.3.47.0
disable
diff --git a/Rds/Implem.PostgreSql/Implem.PostgreSql.csproj b/Rds/Implem.PostgreSql/Implem.PostgreSql.csproj
index cd6a0c9ef..a0ecc9983 100644
--- a/Rds/Implem.PostgreSql/Implem.PostgreSql.csproj
+++ b/Rds/Implem.PostgreSql/Implem.PostgreSql.csproj
@@ -3,9 +3,9 @@
net6.0
Copyright © Implem Inc 2014 - 2023
- 1.3.46.1
- 1.3.46.1
- 1.3.46.1
+ 1.3.47.0
+ 1.3.47.0
+ 1.3.47.0
disable
diff --git a/Rds/Implem.SqlServer/Implem.SqlServer.csproj b/Rds/Implem.SqlServer/Implem.SqlServer.csproj
index 315a343ba..b7880a036 100644
--- a/Rds/Implem.SqlServer/Implem.SqlServer.csproj
+++ b/Rds/Implem.SqlServer/Implem.SqlServer.csproj
@@ -3,9 +3,9 @@
net6.0
Copyright © Implem Inc 2014 - 2023
- 1.3.46.1
- 1.3.46.1
- 1.3.46.1
+ 1.3.47.0
+ 1.3.47.0
+ 1.3.47.0
disable