forked from ddrilling/AsbCloudServer
Merge branch 'dev' into schedule_task
This commit is contained in:
commit
3671dc12a1
@ -55,7 +55,8 @@ namespace AsbCloudDb.Model
|
||||
|
||||
DatabaseFacade Database { get; }
|
||||
|
||||
Task<int> RefreshMaterializedViewAsync<TEntity>(string? mwName = null, CancellationToken token = default) where TEntity : class;
|
||||
Task<int> RefreshMaterializedViewAsync(string? mwName = null, CancellationToken token = default);
|
||||
Task<int> RefreshMaterializedViewAsync<TEntity>(CancellationToken token = default) where TEntity : class;
|
||||
int SaveChanges();
|
||||
int SaveChanges(bool acceptAllChangesOnSuccess);
|
||||
Task<int> SaveChangesAsync(CancellationToken cancellationToken);
|
||||
|
@ -168,9 +168,9 @@ namespace AsbCloudInfrastructure.Services.DailyReport
|
||||
private int AddBlockDrillingModes(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
|
||||
{
|
||||
sheet.Cell(startRow + 2, 6).Value =
|
||||
$"{reportDto.RotorDrillingModes}";
|
||||
$"{string.Join(", ", reportDto.RotorDrillingModes)}";
|
||||
sheet.Cell(startRow + 3, 9).Value =
|
||||
$"{reportDto.SlideDrillingModes}";
|
||||
$"{string.Join(", ", reportDto.SlideDrillingModes)}";
|
||||
|
||||
return startRow + 3;
|
||||
}
|
||||
|
@ -57,7 +57,6 @@ namespace AsbCloudInfrastructure.Services.DetectOperations
|
||||
catch (Exception ex)
|
||||
{
|
||||
Trace.TraceError(ex.Message);
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
GC.Collect();
|
||||
}
|
||||
|
@ -8,58 +8,8 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
||||
{
|
||||
internal class DrillingProgramMaker
|
||||
{
|
||||
|
||||
private const int maxAllowedColumns = 256;
|
||||
|
||||
//public async Task<FileInfoDto> GetOrCreateAsync(int idWell, int idUser, CancellationToken token = default)
|
||||
//{
|
||||
// var programParts = (await fileService.GetInfosByCategoryAsync(idWell, idFileCategoryDrillingProgramItems, token)
|
||||
// .ConfigureAwait(false))
|
||||
// .Where(f => f.FileMarks?.Any(m => m.IdMarkType == 1 && !m.IsDeleted) ?? false);
|
||||
|
||||
// var well = await wellService.GetAsync(idWell, token)
|
||||
// .ConfigureAwait(false);
|
||||
|
||||
// var programs = await fileService.GetInfosByCategoryAsync(idWell, idFileCategoryDrillingProgram, token)
|
||||
// .ConfigureAwait(false);
|
||||
|
||||
// if (programs is not null && programs.Any() && programParts.Any())
|
||||
// {
|
||||
// programs = programs.OrderByDescending(f => f.UploadDate);
|
||||
// var matchFilesIterator = programs.GetEnumerator();
|
||||
// matchFilesIterator.MoveNext();
|
||||
// var matchFile = matchFilesIterator.Current;
|
||||
|
||||
// if (programParts.All(pp => matchFile.UploadDate > pp.UploadDate) &&
|
||||
// File.Exists(fileService.GetUrl(matchFile)))
|
||||
// return matchFile;
|
||||
// else
|
||||
// await fileService.DeleteAsync(matchFile.Id, token)
|
||||
// .ConfigureAwait(false);
|
||||
|
||||
// while (matchFilesIterator.MoveNext())
|
||||
// await fileService.DeleteAsync(matchFilesIterator.Current.Id, token)
|
||||
// .ConfigureAwait(false);
|
||||
// }
|
||||
|
||||
// if (!programParts.Any())
|
||||
// throw new FileNotFoundException("Нет частей для формирования программы бурения");
|
||||
|
||||
// var resultFileName = $"Программа бурения {well.Cluster} {well.Caption}.xlsx";
|
||||
|
||||
// var filteredFilePaths = programParts
|
||||
// .Select(file => fileService.GetUrl(file));
|
||||
|
||||
// var tempResultFilePath = Path.Combine(Path.GetTempPath(), "drillingProgram", resultFileName);
|
||||
|
||||
// UniteExcelFiles(filteredFilePaths, tempResultFilePath);
|
||||
|
||||
// var fileInfo = await fileService.MoveAsync(idWell, null, idFileCategoryDrillingProgram,
|
||||
// resultFileName, tempResultFilePath, token).ConfigureAwait(false);
|
||||
|
||||
// return fileInfo;
|
||||
//}
|
||||
|
||||
public static void UniteExcelFiles(IEnumerable<string> excelFilesNames, string resultExcelPath)
|
||||
{
|
||||
var resultExcelFile = new XLWorkbook(XLEventTracking.Disabled);
|
||||
|
@ -254,7 +254,8 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
||||
if (idUserRole == idUserRoleApprover)
|
||||
await RemoveDrillingProgramAsync(part.IdWell, token);
|
||||
|
||||
await NotifyNewPublisherAsync(idWell, user, part.FileCategory.Name, token);
|
||||
if (idUserRole == idUserRolePublisher)
|
||||
await NotifyNewPublisherAsync(idWell, user, part.FileCategory.Name, token);
|
||||
|
||||
return await context.SaveChangesAsync(token);
|
||||
}
|
||||
@ -291,11 +292,16 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
||||
|
||||
var part = await context.DrillingProgramParts
|
||||
.Include(p => p.RelatedUsers)
|
||||
.ThenInclude(r => r.User)
|
||||
.AsNoTracking()
|
||||
.FirstOrDefaultAsync(p => p.IdWell == fileInfo.IdWell && p.IdFileCategory == fileInfo.IdCategory, token);
|
||||
|
||||
if (!part.RelatedUsers.Any(r => r.IdUser == idUser && r.IdUserRole == idUserRoleApprover))
|
||||
var user = part.RelatedUsers.FirstOrDefault(r => r.IdUser == idUser && r.IdUserRole == idUserRoleApprover)?.User;
|
||||
if (user is null)
|
||||
throw new ForbidException($"User {idUser} is not in the approvers list.");
|
||||
|
||||
fileMarkDto.User = user.Adapt<UserDto>();
|
||||
|
||||
var oldMarksIds = fileInfo.FileMarks
|
||||
?.Where(m => m.User.Id == idUser)
|
||||
.Select(m => m.Id);
|
||||
@ -311,16 +317,22 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
||||
await RemoveDrillingProgramAsync(fileInfo.IdWell, token);
|
||||
await NotifyPublisherOnRejectAsync(fileMarkDto, token);
|
||||
}
|
||||
|
||||
// если все согласованты согласовали - оповещаем публикатора
|
||||
if (part.RelatedUsers
|
||||
.Where(u => u.IdUserRole == idUserRoleApprover)
|
||||
.All(user => fileInfo.FileMarks
|
||||
.Any(mark => mark.IdMarkType == idMarkTypeApprove && mark.User.Id == user.IdUser)))
|
||||
else
|
||||
{
|
||||
await NotifyPublisherOnFullAccepAsync(fileMarkDto, token);
|
||||
// если все согласованты согласовали - оповещаем публикатора
|
||||
var approvers = part.RelatedUsers
|
||||
.Where(u => u.IdUserRole == idUserRoleApprover);
|
||||
if (approvers
|
||||
.All(user => fileInfo.FileMarks
|
||||
.Any(mark => (mark.IdMarkType == idMarkTypeApprove && mark.User.Id == user.IdUser && !mark.IsDeleted)) ||
|
||||
(fileMarkDto.IdMarkType == idMarkTypeApprove && user.IdUser == idUser)))
|
||||
{
|
||||
await NotifyPublisherOnFullAccepAsync(fileMarkDto, token);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -7,15 +7,15 @@ namespace AsbCloudInfrastructure
|
||||
{
|
||||
class MailBodyFactory
|
||||
{
|
||||
protected readonly string platformName;
|
||||
private readonly string platformName;
|
||||
private readonly string platformUrl;
|
||||
protected readonly string companyName;
|
||||
protected readonly string supportMail;
|
||||
private readonly string companyName;
|
||||
private readonly string supportMail;
|
||||
|
||||
public MailBodyFactory(IConfiguration configuration)
|
||||
{
|
||||
platformName = configuration.GetValue("email:platformName", "Цифровое бурение");
|
||||
platformUrl = configuration.GetValue("email:platformUrl", "");
|
||||
platformUrl = configuration.GetValue("email:platformUrl", "https://cloud.digitaldrilling.ru/");
|
||||
companyName = configuration.GetValue("email:companyName", "ООО \"Цифровое бурение\"");
|
||||
supportMail = configuration.GetValue("email:supportMail", "support@digitaldrilling.ru");
|
||||
}
|
||||
@ -26,11 +26,11 @@ namespace AsbCloudInfrastructure
|
||||
return subj;
|
||||
}
|
||||
|
||||
public string MakeMailBodyForNewPublisher(WellDto well, string userName, string documentCategory)
|
||||
public string MakeMailBodyForNewPublisher(WellDto well, string publisherName, string documentCategory)
|
||||
{
|
||||
var drillingProgramHref = MakeDrillingProgramHref(well);
|
||||
|
||||
var body = $"<html><body><h2>Здравствуйте, {userName}.</h2>" +
|
||||
var body = $"<html><body><h2>Здравствуйте, {publisherName}.</h2>" +
|
||||
$"На портале {platformName} началось создание программы бурения скважины {drillingProgramHref}," +
|
||||
$" куст {well.Cluster}, месторождение {well.Deposit}." +
|
||||
$"<br><br>От вас ожидается загрузка на портал документа «{documentCategory}» в формате excel (*.xlsx)." +
|
||||
@ -39,13 +39,12 @@ namespace AsbCloudInfrastructure
|
||||
return body;
|
||||
}
|
||||
|
||||
public string MakeMailBodyForApproverNewFile(WellDto well, string userName, int idFile, string fileName)
|
||||
public string MakeMailBodyForApproverNewFile(WellDto well, string approverName, int idFile, string fileName)
|
||||
{
|
||||
var fileDownloadHref = MakeFileDownloadHref(well.Id, idFile, fileName);
|
||||
var drillingProgramHref = MakeDrillingProgramHref(well);
|
||||
|
||||
var body = $"<html><body><h2>Здравствуйте, {userName}.</h2>" +
|
||||
$"На портал {platformName} загружен документ {fileDownloadHref}" +
|
||||
var body = $"<html><body><h2>Здравствуйте, {approverName}.</h2>" +
|
||||
$"На портал {platformName} загружен документ {fileName}" +
|
||||
$" для согласования при создании программы бурения скважины {drillingProgramHref}, куст ({well.Cluster})" +
|
||||
$", месторождение ({well.Deposit}).<br>" +
|
||||
MakeSignatue() +
|
||||
@ -53,28 +52,26 @@ namespace AsbCloudInfrastructure
|
||||
return body;
|
||||
}
|
||||
|
||||
public string MakeMailBodyForPublisherOnReject(WellDto well, string userName, int idFile, string fileName, FileMarkDto fileMark)
|
||||
public string MakeMailBodyForPublisherOnReject(WellDto well, string publisherName, int idFile, string fileName, FileMarkDto fileMark)
|
||||
{
|
||||
var fileDownloadHref = MakeFileDownloadHref(well.Id, idFile, fileName);
|
||||
var drillingProgramHref = MakeDrillingProgramHref(well);
|
||||
|
||||
var body = $"<html><body><h2>Здравствуйте, {userName}.</h2>" +
|
||||
$"На портале {platformName} отклонен загруженный вами документ {fileDownloadHref} " +
|
||||
var body = $"<html><body><h2>Здравствуйте, {publisherName}.</h2>" +
|
||||
$"На портале {platformName} отклонен загруженный вами документ {fileName} " +
|
||||
$" по программе бурения скважины {drillingProgramHref}," +
|
||||
$" куст {well.Cluster}, месторождение {well.Deposit}." +
|
||||
$" Комментарий согласующего ({fileMark.User.Name} {fileMark.User.Surname}):<br>{fileMark.Comment}" +
|
||||
$" Комментарий согласующего ({fileMark.User?.Name} {fileMark.User?.Surname}):<br>{fileMark.Comment}" +
|
||||
MakeSignatue() +
|
||||
$"</body></html>";
|
||||
return body;
|
||||
}
|
||||
|
||||
public string MakeMailBodyForPublisherOnFullAccept(WellDto well, string userName, int idFile, string fileName)
|
||||
public string MakeMailBodyForPublisherOnFullAccept(WellDto well, string publisherName, int idFile, string fileName)
|
||||
{
|
||||
var fileDownloadHref = MakeFileDownloadHref(well.Id, idFile, fileName);
|
||||
var drillingProgramHref = MakeDrillingProgramHref(well);
|
||||
|
||||
var body = $"<html><body><h2>Здравствуйте, {userName}.</h2>" +
|
||||
$"На портале {platformName} полностью согласован документ {fileDownloadHref} " +
|
||||
var body = $"<html><body><h2>Здравствуйте, {publisherName}.</h2>" +
|
||||
$"На портале {platformName} полностью согласован документ {fileName} " +
|
||||
$" по программе бурения скважины {drillingProgramHref}," +
|
||||
$" куст {well.Cluster}, месторождение {well.Deposit}." +
|
||||
MakeSignatue() +
|
||||
@ -82,16 +79,9 @@ namespace AsbCloudInfrastructure
|
||||
return body;
|
||||
}
|
||||
|
||||
private string MakeFileDownloadHref(int idWell, int idFile, string fileName)
|
||||
{
|
||||
var fileDownloadUrl = $"{platformUrl}/api/well/{idWell}/files/{idFile}";
|
||||
var fileDownloadHref = MakeHref(fileDownloadUrl, fileName);
|
||||
return fileDownloadHref;
|
||||
}
|
||||
|
||||
private string MakeDrillingProgramHref(WellDto well)
|
||||
{
|
||||
var drillingProgramUrl = $"{platformUrl}/api/well/{well.Id}/drillingProgram";
|
||||
var drillingProgramUrl = $"{platformUrl}/well/{well.Id}/drillingProgram";
|
||||
var drillingProgramHref = MakeHref(drillingProgramUrl, well.Caption);
|
||||
return drillingProgramHref;
|
||||
}
|
||||
|
@ -337,6 +337,7 @@ namespace AsbCloudInfrastructure.Services
|
||||
newFileMark.Id = default;
|
||||
newFileMark.DateCreated = DateTime.UtcNow;
|
||||
newFileMark.IdUser = idUser;
|
||||
newFileMark.User = null;
|
||||
|
||||
db.FileMarks.Add(newFileMark);
|
||||
return await db.SaveChangesAsync(token);
|
||||
|
@ -119,13 +119,13 @@ namespace AsbCloudWebApi.Controllers
|
||||
return BadRequest(ArgumentInvalidException.MakeValidationError(nameof(files), "only 1 file can be uploaded"));
|
||||
|
||||
if (files.Count == 0)
|
||||
return BadRequest(ArgumentInvalidException.MakeValidationError(nameof(files), "at list 1 file can be uploaded"));
|
||||
return BadRequest(ArgumentInvalidException.MakeValidationError(nameof(files), "at list 1 file should be uploaded"));
|
||||
|
||||
var fileName = files[0].FileName;
|
||||
|
||||
if (!fileName.EndsWith(".xlsx"))
|
||||
return BadRequest(ArgumentInvalidException.MakeValidationError("file", "Файл должен быть xlsx"));
|
||||
|
||||
|
||||
var fileStream = files[0].OpenReadStream();
|
||||
var result = await drillingProgramService.AddFile(idWell, idFileCategory, (int)idUser, fileName, fileStream, token);
|
||||
|
||||
|
@ -16,7 +16,12 @@
|
||||
"email": {
|
||||
"smtpServer": "smtp.timeweb.ru",
|
||||
"sender": "bot@autodrilling.ru",
|
||||
"password": "xHhgwZ4D"
|
||||
"password": "xHhgwZ4D",
|
||||
|
||||
"platformName": "Цифровое бурение",
|
||||
"platformUrl": "https://cloud.digitaldrilling.ru",
|
||||
"companyName": "ООО \"Цифровое бурение\"",
|
||||
"supportMail": "support@digitaldrilling.ru"
|
||||
},
|
||||
"Urls": "http://0.0.0.0:5000" //;https://0.0.0.0:5001" //,
|
||||
// See https man: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/endpoints?view=aspnetcore-6.0
|
||||
|
@ -1,52 +1,50 @@
|
||||
{
|
||||
"files": {
|
||||
"main.css": "/static/css/main.3c432080.chunk.css",
|
||||
"main.js": "/static/js/main.0ca79ff5.chunk.js",
|
||||
"main.js.map": "/static/js/main.0ca79ff5.chunk.js.map",
|
||||
"runtime-main.js": "/static/js/runtime-main.485a750c.js",
|
||||
"runtime-main.js.map": "/static/js/runtime-main.485a750c.js.map",
|
||||
"static/js/2.2203d21b.chunk.js": "/static/js/2.2203d21b.chunk.js",
|
||||
"static/js/2.2203d21b.chunk.js.map": "/static/js/2.2203d21b.chunk.js.map",
|
||||
"main.css": "/static/css/main.c2a82e71.chunk.css",
|
||||
"main.js": "/static/js/main.1a56c0e0.chunk.js",
|
||||
"main.js.map": "/static/js/main.1a56c0e0.chunk.js.map",
|
||||
"runtime-main.js": "/static/js/runtime-main.8da12c69.js",
|
||||
"runtime-main.js.map": "/static/js/runtime-main.8da12c69.js.map",
|
||||
"static/js/2.f196b75b.chunk.js": "/static/js/2.f196b75b.chunk.js",
|
||||
"static/js/2.f196b75b.chunk.js.map": "/static/js/2.f196b75b.chunk.js.map",
|
||||
"static/css/3.f8ac3883.chunk.css": "/static/css/3.f8ac3883.chunk.css",
|
||||
"static/js/3.37ce3ed2.chunk.js": "/static/js/3.37ce3ed2.chunk.js",
|
||||
"static/js/3.37ce3ed2.chunk.js.map": "/static/js/3.37ce3ed2.chunk.js.map",
|
||||
"static/js/3.31b66021.chunk.js": "/static/js/3.31b66021.chunk.js",
|
||||
"static/js/3.31b66021.chunk.js.map": "/static/js/3.31b66021.chunk.js.map",
|
||||
"static/css/4.f8ac3883.chunk.css": "/static/css/4.f8ac3883.chunk.css",
|
||||
"static/js/4.990dc4ef.chunk.js": "/static/js/4.990dc4ef.chunk.js",
|
||||
"static/js/4.990dc4ef.chunk.js.map": "/static/js/4.990dc4ef.chunk.js.map",
|
||||
"static/js/5.3f7d3780.chunk.js": "/static/js/5.3f7d3780.chunk.js",
|
||||
"static/js/5.3f7d3780.chunk.js.map": "/static/js/5.3f7d3780.chunk.js.map",
|
||||
"static/js/6.c6d1ff20.chunk.js": "/static/js/6.c6d1ff20.chunk.js",
|
||||
"static/js/6.c6d1ff20.chunk.js.map": "/static/js/6.c6d1ff20.chunk.js.map",
|
||||
"static/js/7.5e0d4920.chunk.js": "/static/js/7.5e0d4920.chunk.js",
|
||||
"static/js/7.5e0d4920.chunk.js.map": "/static/js/7.5e0d4920.chunk.js.map",
|
||||
"static/js/8.e7bbc963.chunk.js": "/static/js/8.e7bbc963.chunk.js",
|
||||
"static/js/8.e7bbc963.chunk.js.map": "/static/js/8.e7bbc963.chunk.js.map",
|
||||
"static/js/9.00e23c66.chunk.js": "/static/js/9.00e23c66.chunk.js",
|
||||
"static/js/9.00e23c66.chunk.js.map": "/static/js/9.00e23c66.chunk.js.map",
|
||||
"static/js/10.8775687b.chunk.js": "/static/js/10.8775687b.chunk.js",
|
||||
"static/js/10.8775687b.chunk.js.map": "/static/js/10.8775687b.chunk.js.map",
|
||||
"static/js/11.149d8387.chunk.js": "/static/js/11.149d8387.chunk.js",
|
||||
"static/js/11.149d8387.chunk.js.map": "/static/js/11.149d8387.chunk.js.map",
|
||||
"static/js/12.804eae39.chunk.js": "/static/js/12.804eae39.chunk.js",
|
||||
"static/js/12.804eae39.chunk.js.map": "/static/js/12.804eae39.chunk.js.map",
|
||||
"static/js/13.9dd1a8a3.chunk.js": "/static/js/13.9dd1a8a3.chunk.js",
|
||||
"static/js/13.9dd1a8a3.chunk.js.map": "/static/js/13.9dd1a8a3.chunk.js.map",
|
||||
"static/js/14.4b4cff1c.chunk.js": "/static/js/14.4b4cff1c.chunk.js",
|
||||
"static/js/14.4b4cff1c.chunk.js.map": "/static/js/14.4b4cff1c.chunk.js.map",
|
||||
"static/js/15.9a63212e.chunk.js": "/static/js/15.9a63212e.chunk.js",
|
||||
"static/js/15.9a63212e.chunk.js.map": "/static/js/15.9a63212e.chunk.js.map",
|
||||
"static/js/4.1f09e89e.chunk.js": "/static/js/4.1f09e89e.chunk.js",
|
||||
"static/js/4.1f09e89e.chunk.js.map": "/static/js/4.1f09e89e.chunk.js.map",
|
||||
"static/js/5.ef929bfe.chunk.js": "/static/js/5.ef929bfe.chunk.js",
|
||||
"static/js/5.ef929bfe.chunk.js.map": "/static/js/5.ef929bfe.chunk.js.map",
|
||||
"static/js/6.88051835.chunk.js": "/static/js/6.88051835.chunk.js",
|
||||
"static/js/6.88051835.chunk.js.map": "/static/js/6.88051835.chunk.js.map",
|
||||
"static/js/7.4f3c315a.chunk.js": "/static/js/7.4f3c315a.chunk.js",
|
||||
"static/js/7.4f3c315a.chunk.js.map": "/static/js/7.4f3c315a.chunk.js.map",
|
||||
"static/js/8.8e9a1dc7.chunk.js": "/static/js/8.8e9a1dc7.chunk.js",
|
||||
"static/js/8.8e9a1dc7.chunk.js.map": "/static/js/8.8e9a1dc7.chunk.js.map",
|
||||
"static/js/9.71667cac.chunk.js": "/static/js/9.71667cac.chunk.js",
|
||||
"static/js/9.71667cac.chunk.js.map": "/static/js/9.71667cac.chunk.js.map",
|
||||
"static/js/10.e5247b1b.chunk.js": "/static/js/10.e5247b1b.chunk.js",
|
||||
"static/js/10.e5247b1b.chunk.js.map": "/static/js/10.e5247b1b.chunk.js.map",
|
||||
"static/js/11.70112c8f.chunk.js": "/static/js/11.70112c8f.chunk.js",
|
||||
"static/js/11.70112c8f.chunk.js.map": "/static/js/11.70112c8f.chunk.js.map",
|
||||
"static/js/12.2265b74f.chunk.js": "/static/js/12.2265b74f.chunk.js",
|
||||
"static/js/12.2265b74f.chunk.js.map": "/static/js/12.2265b74f.chunk.js.map",
|
||||
"static/js/13.063a16c9.chunk.js": "/static/js/13.063a16c9.chunk.js",
|
||||
"static/js/13.063a16c9.chunk.js.map": "/static/js/13.063a16c9.chunk.js.map",
|
||||
"static/js/14.50a284b1.chunk.js": "/static/js/14.50a284b1.chunk.js",
|
||||
"static/js/14.50a284b1.chunk.js.map": "/static/js/14.50a284b1.chunk.js.map",
|
||||
"index.html": "/index.html",
|
||||
"static/css/3.f8ac3883.chunk.css.map": "/static/css/3.f8ac3883.chunk.css.map",
|
||||
"static/css/4.f8ac3883.chunk.css.map": "/static/css/4.f8ac3883.chunk.css.map",
|
||||
"static/css/main.3c432080.chunk.css.map": "/static/css/main.3c432080.chunk.css.map",
|
||||
"static/js/2.2203d21b.chunk.js.LICENSE.txt": "/static/js/2.2203d21b.chunk.js.LICENSE.txt",
|
||||
"static/css/main.c2a82e71.chunk.css.map": "/static/css/main.c2a82e71.chunk.css.map",
|
||||
"static/js/2.f196b75b.chunk.js.LICENSE.txt": "/static/js/2.f196b75b.chunk.js.LICENSE.txt",
|
||||
"static/media/ClusterIcon.f85713df.svg": "/static/media/ClusterIcon.f85713df.svg",
|
||||
"static/media/DepositIcon.9688e406.svg": "/static/media/DepositIcon.9688e406.svg"
|
||||
},
|
||||
"entrypoints": [
|
||||
"static/js/runtime-main.485a750c.js",
|
||||
"static/js/2.2203d21b.chunk.js",
|
||||
"static/css/main.3c432080.chunk.css",
|
||||
"static/js/main.0ca79ff5.chunk.js"
|
||||
"static/js/runtime-main.8da12c69.js",
|
||||
"static/js/2.f196b75b.chunk.js",
|
||||
"static/css/main.c2a82e71.chunk.css",
|
||||
"static/js/main.1a56c0e0.chunk.js"
|
||||
]
|
||||
}
|
@ -1 +1 @@
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="онлайн мониторинг процесса бурения в реальном времени в офисе заказчика"/><link rel="manifest" href="/manifest.json"/><title>АСБ Vision</title><link href="/static/css/main.3c432080.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function t(t){for(var n,o,u=t[0],f=t[1],i=t[2],l=0,s=[];l<u.length;l++)o=u[l],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&s.push(a[o][0]),a[o]=0;for(n in f)Object.prototype.hasOwnProperty.call(f,n)&&(e[n]=f[n]);for(d&&d(t);s.length;)s.shift()();return c.push.apply(c,i||[]),r()}function r(){for(var e,t=0;t<c.length;t++){for(var r=c[t],n=!0,o=1;o<r.length;o++){var f=r[o];0!==a[f]&&(n=!1)}n&&(c.splice(t--,1),e=u(u.s=r[0]))}return e}var n={},o={1:0},a={1:0},c=[];function u(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,u),r.l=!0,r.exports}u.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{3:1,4:1}[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{3:"f8ac3883",4:"f8ac3883",5:"31d6cfe0",6:"31d6cfe0",7:"31d6cfe0",8:"31d6cfe0",9:"31d6cfe0",10:"31d6cfe0",11:"31d6cfe0",12:"31d6cfe0",13:"31d6cfe0",14:"31d6cfe0",15:"31d6cfe0"}[e]+".chunk.css",a=u.p+n,c=document.getElementsByTagName("link"),f=0;f<c.length;f++){var i=(d=c[f]).getAttribute("data-href")||d.getAttribute("href");if("stylesheet"===d.rel&&(i===n||i===a))return t()}var l=document.getElementsByTagName("style");for(f=0;f<l.length;f++){var d;if((i=(d=l[f]).getAttribute("data-href"))===n||i===a)return t()}var s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.onload=t,s.onerror=function(t){var n=t&&t.target&&t.target.src||a,c=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");c.code="CSS_CHUNK_LOAD_FAILED",c.request=n,delete o[e],s.parentNode.removeChild(s),r(c)},s.href=a,document.getElementsByTagName("head")[0].appendChild(s)})).then((function(){o[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=n);var c,f=document.createElement("script");f.charset="utf-8",f.timeout=120,u.nc&&f.setAttribute("nonce",u.nc),f.src=function(e){return u.p+"static/js/"+({}[e]||e)+"."+{3:"37ce3ed2",4:"990dc4ef",5:"3f7d3780",6:"c6d1ff20",7:"5e0d4920",8:"e7bbc963",9:"00e23c66",10:"8775687b",11:"149d8387",12:"804eae39",13:"9dd1a8a3",14:"4b4cff1c",15:"9a63212e"}[e]+".chunk.js"}(e);var i=new Error;c=function(t){f.onerror=f.onload=null,clearTimeout(l);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",i.name="ChunkLoadError",i.type=n,i.request=o,r[1](i)}a[e]=void 0}};var l=setTimeout((function(){c({type:"timeout",target:f})}),12e4);f.onerror=f.onload=c,document.head.appendChild(f)}return Promise.all(t)},u.m=e,u.c=n,u.d=function(e,t,r){u.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,t){if(1&t&&(e=u(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(u.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)u.d(r,n,function(t){return e[t]}.bind(null,n));return r},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,"a",t),t},u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},u.p="/",u.oe=function(e){throw console.error(e),e};var f=this.webpackJsonpasb_cloud_front_react=this.webpackJsonpasb_cloud_front_react||[],i=f.push.bind(f);f.push=t,f=f.slice();for(var l=0;l<f.length;l++)t(f[l]);var d=i;r()}([])</script><script src="/static/js/2.2203d21b.chunk.js"></script><script src="/static/js/main.0ca79ff5.chunk.js"></script></body></html>
|
||||
<!doctype html><html lang="ru"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="white"/><meta name="theme-color" media="(prefers-color-scheme: light)" content="white"/><meta name="theme-color" media="(prefers-color-scheme: dark)" content="black"/><meta name="description" content="Онлайн мониторинг процесса бурения в реальном времени в офисе заказчика"/><link rel="manifest" href="/manifest.json"/><title>АСБ Vision</title><link href="/static/css/main.c2a82e71.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function t(t){for(var n,o,u=t[0],f=t[1],i=t[2],l=0,d=[];l<u.length;l++)o=u[l],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&d.push(a[o][0]),a[o]=0;for(n in f)Object.prototype.hasOwnProperty.call(f,n)&&(e[n]=f[n]);for(s&&s(t);d.length;)d.shift()();return c.push.apply(c,i||[]),r()}function r(){for(var e,t=0;t<c.length;t++){for(var r=c[t],n=!0,o=1;o<r.length;o++){var f=r[o];0!==a[f]&&(n=!1)}n&&(c.splice(t--,1),e=u(u.s=r[0]))}return e}var n={},o={1:0},a={1:0},c=[];function u(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,u),r.l=!0,r.exports}u.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{3:1,4:1}[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{3:"f8ac3883",4:"f8ac3883",5:"31d6cfe0",6:"31d6cfe0",7:"31d6cfe0",8:"31d6cfe0",9:"31d6cfe0",10:"31d6cfe0",11:"31d6cfe0",12:"31d6cfe0",13:"31d6cfe0",14:"31d6cfe0"}[e]+".chunk.css",a=u.p+n,c=document.getElementsByTagName("link"),f=0;f<c.length;f++){var i=(s=c[f]).getAttribute("data-href")||s.getAttribute("href");if("stylesheet"===s.rel&&(i===n||i===a))return t()}var l=document.getElementsByTagName("style");for(f=0;f<l.length;f++){var s;if((i=(s=l[f]).getAttribute("data-href"))===n||i===a)return t()}var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onload=t,d.onerror=function(t){var n=t&&t.target&&t.target.src||a,c=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");c.code="CSS_CHUNK_LOAD_FAILED",c.request=n,delete o[e],d.parentNode.removeChild(d),r(c)},d.href=a,document.getElementsByTagName("head")[0].appendChild(d)})).then((function(){o[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=n);var c,f=document.createElement("script");f.charset="utf-8",f.timeout=120,u.nc&&f.setAttribute("nonce",u.nc),f.src=function(e){return u.p+"static/js/"+({}[e]||e)+"."+{3:"31b66021",4:"1f09e89e",5:"ef929bfe",6:"88051835",7:"4f3c315a",8:"8e9a1dc7",9:"71667cac",10:"e5247b1b",11:"70112c8f",12:"2265b74f",13:"063a16c9",14:"50a284b1"}[e]+".chunk.js"}(e);var i=new Error;c=function(t){f.onerror=f.onload=null,clearTimeout(l);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",i.name="ChunkLoadError",i.type=n,i.request=o,r[1](i)}a[e]=void 0}};var l=setTimeout((function(){c({type:"timeout",target:f})}),12e4);f.onerror=f.onload=c,document.head.appendChild(f)}return Promise.all(t)},u.m=e,u.c=n,u.d=function(e,t,r){u.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,t){if(1&t&&(e=u(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(u.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)u.d(r,n,function(t){return e[t]}.bind(null,n));return r},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,"a",t),t},u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},u.p="/",u.oe=function(e){throw console.error(e),e};var f=this.webpackJsonpasb_cloud_front_react=this.webpackJsonpasb_cloud_front_react||[],i=f.push.bind(f);f.push=t,f=f.slice();for(var l=0;l<f.length;l++)t(f[l]);var s=i;r()}([])</script><script src="/static/js/2.f196b75b.chunk.js"></script><script src="/static/js/main.1a56c0e0.chunk.js"></script></body></html>
|
Loading…
Reference in New Issue
Block a user