From 5adba4c4e8c5ba9091f703e8efecdcd5e1549e3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20Barti=C4=8Dka?= <aitakaitov@gmail.com> Date: Wed, 27 Apr 2022 11:02:48 +0200 Subject: [PATCH 01/12] Implemented static global config, added endpoint to set req annotations per document --- .../Backend/Controllers/DocumentController.cs | 30 +++++++++++++++++++ .../DocumentService/DocumentServiceEF.cs | 29 ++++++++---------- .../DocumentService/IDocumentService.cs | 2 ++ .../Core/StaticConfig/GlobalConfiguration.cs | 25 ++++++++++++++++ Backend/Models/Documents/DocumentAddInfo.cs | 2 +- .../SetRequiredAnnotationsRequest.cs | 14 +++++++++ 6 files changed, 84 insertions(+), 18 deletions(-) create mode 100644 Backend/Core/StaticConfig/GlobalConfiguration.cs create mode 100644 Backend/Models/Documents/SetRequiredAnnotationsRequest.cs diff --git a/Backend/Backend/Controllers/DocumentController.cs b/Backend/Backend/Controllers/DocumentController.cs index ba846bc..acc701f 100644 --- a/Backend/Backend/Controllers/DocumentController.cs +++ b/Backend/Backend/Controllers/DocumentController.cs @@ -69,5 +69,35 @@ public class DocumentController : Common.CommonControllerBase return Ok(); } + + + + [HttpPost("/documents/requiredAnnotations")] + [Authorize(Models.Enums.ERole.ADMINISTRATOR)] + [ProducesResponseType((int)HttpStatusCode.OK)] + [ProducesResponseType((int)HttpStatusCode.Forbidden)] + public ActionResult SetRequiredAnnotationsForDocuments([FromServices] ClientInfo clientInfo, [FromBody] SetRequiredAnnotationsRequest request) + { + if (clientInfo.LoggedUser == null) + { + logger.Warning("ClientInfo has null LoggerUser in [Authorized] controller /documents"); + return Problem(); + } + + try + { + documentService.SetRequiredAnnotationsForDocuments(request); + } + catch (InvalidOperationException e) + { + throw new BadRequestException(e.Message); + } + catch (Exception e) + { + throw new InternalErrorException(e.Message); + } + + return Ok(); + } } diff --git a/Backend/Core/Services/DocumentService/DocumentServiceEF.cs b/Backend/Core/Services/DocumentService/DocumentServiceEF.cs index 893ced4..811f3ea 100644 --- a/Backend/Core/Services/DocumentService/DocumentServiceEF.cs +++ b/Backend/Core/Services/DocumentService/DocumentServiceEF.cs @@ -12,6 +12,7 @@ using System.Web; using AutoMapper; using Models.Users; using Ganss.XSS; +using Core.StaticConfig; namespace Core.Services.DocumentService { @@ -105,27 +106,12 @@ namespace Core.Services.DocumentService UserAdded = userAdded, Name = documentName, Length = documentContent.Content.Length, - RequiredAnnotations = 3 // TODO this is only for testing purposes + RequiredAnnotations = GlobalConfiguration.RequiredAnnotations }; - /*foreach (var user in users) - { - Annotation annotation = new Annotation() - { - User = user, - UserAssigned = userAdded, - State = Models.Enums.EState.NEW, - DateAssigned = DateTime.Now, - DateLastChanged = DateTime.Now, - Document = document, - Note = "" - }; - databaseContext.Annotations.Add(annotation); - }*/ - databaseContext.DocumentContents.Add(documentContent); databaseContext.Documents.Add(document); - databaseContext.SaveChanges(); // Maybe do this after all the documents are added + databaseContext.SaveChanges(); } public DocumentListResponse GetDocuments(int pageIndex, int pageSize) @@ -169,5 +155,14 @@ namespace Core.Services.DocumentService }; } + public void SetRequiredAnnotationsForDocuments(SetRequiredAnnotationsRequest request) + { + var documents = databaseContext.Documents.Where(d => request.DocumentIds.Contains(d.Id)); + foreach (var doc in documents) + { + doc.RequiredAnnotations = request.RequiredAnnotations; + } + databaseContext.SaveChanges(); + } } } diff --git a/Backend/Core/Services/DocumentService/IDocumentService.cs b/Backend/Core/Services/DocumentService/IDocumentService.cs index ed2943b..016349e 100644 --- a/Backend/Core/Services/DocumentService/IDocumentService.cs +++ b/Backend/Core/Services/DocumentService/IDocumentService.cs @@ -14,5 +14,7 @@ namespace Core.Services.DocumentService public void AddDocuments(DocumentAddRequest request, Guid userId); public DocumentListResponse GetDocuments(int pageIdnex, int pageSize); + + public void SetRequiredAnnotationsForDocuments(SetRequiredAnnotationsRequest request); } } diff --git a/Backend/Core/StaticConfig/GlobalConfiguration.cs b/Backend/Core/StaticConfig/GlobalConfiguration.cs new file mode 100644 index 0000000..1048034 --- /dev/null +++ b/Backend/Core/StaticConfig/GlobalConfiguration.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Core.StaticConfig +{ + public class GlobalConfiguration + { + // Default count of required annotations + private static Mutex RequiredAnnotationsMutex = new Mutex(); + private static int requiredAnnotations = 3; + public static int RequiredAnnotations + { + get { return requiredAnnotations; } + set + { + RequiredAnnotationsMutex.WaitOne(); + requiredAnnotations = value; + RequiredAnnotationsMutex.ReleaseMutex(); + } + } + } +} diff --git a/Backend/Models/Documents/DocumentAddInfo.cs b/Backend/Models/Documents/DocumentAddInfo.cs index 771b59b..7df8a76 100644 --- a/Backend/Models/Documents/DocumentAddInfo.cs +++ b/Backend/Models/Documents/DocumentAddInfo.cs @@ -15,6 +15,6 @@ namespace Models.Documents; public class DocumentAddInfo { public string Name { get; set; } - public EAddDocumentFormat Format { get; set; } + public EAddDocumentFormat Format { get; set; } = EAddDocumentFormat.TEXTFILE; public string Content { get; set; } } diff --git a/Backend/Models/Documents/SetRequiredAnnotationsRequest.cs b/Backend/Models/Documents/SetRequiredAnnotationsRequest.cs new file mode 100644 index 0000000..a9a1f85 --- /dev/null +++ b/Backend/Models/Documents/SetRequiredAnnotationsRequest.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Models.Documents +{ + public class SetRequiredAnnotationsRequest + { + public int RequiredAnnotations { get; set; } + public List<Guid> DocumentIds { get; set; } = new(); + } +} -- GitLab From 0a6d22b709c6b6839c3006d156cd6abcf45a0cd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20Barti=C4=8Dka?= <aitakaitov@gmail.com> Date: Wed, 27 Apr 2022 11:08:10 +0200 Subject: [PATCH 02/12] Added endpoint to set global required annotations --- .../Backend/Controllers/DocumentController.cs | 28 +++++++++++++++++++ .../DocumentService/DocumentServiceEF.cs | 6 ++++ .../DocumentService/IDocumentService.cs | 2 ++ .../SetRequiredAnnotationsGlobalRequest.cs | 13 +++++++++ 4 files changed, 49 insertions(+) create mode 100644 Backend/Models/Documents/SetRequiredAnnotationsGlobalRequest.cs diff --git a/Backend/Backend/Controllers/DocumentController.cs b/Backend/Backend/Controllers/DocumentController.cs index acc701f..34168b8 100644 --- a/Backend/Backend/Controllers/DocumentController.cs +++ b/Backend/Backend/Controllers/DocumentController.cs @@ -99,5 +99,33 @@ public class DocumentController : Common.CommonControllerBase return Ok(); } + + [HttpPost("/documents/requiredAnnotations/global")] + [Authorize(Models.Enums.ERole.ADMINISTRATOR)] + [ProducesResponseType((int)HttpStatusCode.OK)] + [ProducesResponseType((int)HttpStatusCode.Forbidden)] + public ActionResult SetRequiredAnnotationsGlobal([FromServices] ClientInfo clientInfo, [FromBody] SetRequiredAnnotationsGlobalRequest request) + { + if (clientInfo.LoggedUser == null) + { + logger.Warning("ClientInfo has null LoggerUser in [Authorized] controller /documents"); + return Problem(); + } + + try + { + documentService.SetRequiredAnnotationsGlobal(request.RequiredAnnotations); + } + catch (InvalidOperationException e) + { + throw new BadRequestException(e.Message); + } + catch (Exception e) + { + throw new InternalErrorException(e.Message); + } + + return Ok(); + } } diff --git a/Backend/Core/Services/DocumentService/DocumentServiceEF.cs b/Backend/Core/Services/DocumentService/DocumentServiceEF.cs index 811f3ea..fc7fc92 100644 --- a/Backend/Core/Services/DocumentService/DocumentServiceEF.cs +++ b/Backend/Core/Services/DocumentService/DocumentServiceEF.cs @@ -164,5 +164,11 @@ namespace Core.Services.DocumentService } databaseContext.SaveChanges(); } + + public void SetRequiredAnnotationsGlobal(int requiredAnnotations) + { + GlobalConfiguration.RequiredAnnotations = requiredAnnotations; + } + } } diff --git a/Backend/Core/Services/DocumentService/IDocumentService.cs b/Backend/Core/Services/DocumentService/IDocumentService.cs index 016349e..f77643f 100644 --- a/Backend/Core/Services/DocumentService/IDocumentService.cs +++ b/Backend/Core/Services/DocumentService/IDocumentService.cs @@ -16,5 +16,7 @@ namespace Core.Services.DocumentService public DocumentListResponse GetDocuments(int pageIdnex, int pageSize); public void SetRequiredAnnotationsForDocuments(SetRequiredAnnotationsRequest request); + + public void SetRequiredAnnotationsGlobal(int requiredAnnotations); } } diff --git a/Backend/Models/Documents/SetRequiredAnnotationsGlobalRequest.cs b/Backend/Models/Documents/SetRequiredAnnotationsGlobalRequest.cs new file mode 100644 index 0000000..c3281b1 --- /dev/null +++ b/Backend/Models/Documents/SetRequiredAnnotationsGlobalRequest.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Models.Documents +{ + public class SetRequiredAnnotationsGlobalRequest + { + public int RequiredAnnotations { get; set; } + } +} -- GitLab From ceb95b98f31af59944eaeb50125c1afeca4ede11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20Barti=C4=8Dka?= <aitakaitov@gmail.com> Date: Wed, 27 Apr 2022 11:29:30 +0200 Subject: [PATCH 03/12] Added endpoint to get global required annotations, moved configuration to database --- .../Backend/Controllers/DocumentController.cs | 30 +++++++++++++++++++ Backend/Core/Constants/Constants.cs | 13 ++++++++ Backend/Core/Contexts/DatabaseContext.cs | 2 +- Backend/Core/Entities/ConfigurationItem.cs | 14 +++++++++ Backend/Core/Seeding/Seeder.cs | 15 ++++++++++ .../DocumentService/DocumentServiceEF.cs | 21 ++++++++----- .../DocumentService/IDocumentService.cs | 2 ++ .../Core/StaticConfig/GlobalConfiguration.cs | 25 ---------------- .../GetRequiredAnnotationsGlobalResponse.cs | 13 ++++++++ 9 files changed, 101 insertions(+), 34 deletions(-) create mode 100644 Backend/Core/Constants/Constants.cs create mode 100644 Backend/Core/Entities/ConfigurationItem.cs delete mode 100644 Backend/Core/StaticConfig/GlobalConfiguration.cs create mode 100644 Backend/Models/Documents/GetRequiredAnnotationsGlobalResponse.cs diff --git a/Backend/Backend/Controllers/DocumentController.cs b/Backend/Backend/Controllers/DocumentController.cs index 34168b8..54afd9f 100644 --- a/Backend/Backend/Controllers/DocumentController.cs +++ b/Backend/Backend/Controllers/DocumentController.cs @@ -127,5 +127,35 @@ public class DocumentController : Common.CommonControllerBase return Ok(); } + + [HttpGet("/documents/requiredAnnotations/global")] + [Authorize(Models.Enums.ERole.ADMINISTRATOR)] + [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GetRequiredAnnotationsGlobalResponse))] + [ProducesResponseType((int)HttpStatusCode.Forbidden)] + public ActionResult<GetRequiredAnnotationsGlobalResponse> GetRequiredAnnotationsGlobal([FromServices] ClientInfo clientInfo) + { + if (clientInfo.LoggedUser == null) + { + logger.Warning("ClientInfo has null LoggerUser in [Authorized] controller /documents"); + return Problem(); + } + + try + { + return Ok(new GetRequiredAnnotationsGlobalResponse() + { + RequiredAnnotationsGlobal = documentService.GetRequiredAnnotationsGlobal() + }); + + } + catch (InvalidOperationException e) + { + throw new BadRequestException(e.Message); + } + catch (Exception e) + { + throw new InternalErrorException(e.Message); + } + } } diff --git a/Backend/Core/Constants/Constants.cs b/Backend/Core/Constants/Constants.cs new file mode 100644 index 0000000..fece77c --- /dev/null +++ b/Backend/Core/Constants/Constants.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Core.Constants +{ + public class Constants + { + public static string RequiredAnnotationsKey { get; } = "RequiredAnnotations"; + } +} diff --git a/Backend/Core/Contexts/DatabaseContext.cs b/Backend/Core/Contexts/DatabaseContext.cs index ff34af6..d65e36f 100644 --- a/Backend/Core/Contexts/DatabaseContext.cs +++ b/Backend/Core/Contexts/DatabaseContext.cs @@ -23,11 +23,11 @@ namespace Core.Contexts public DbSet<User> Users { get; set; } public DbSet<Annotation> Annotations { get; set; } public DbSet<Class> Classes { get; set; } - //public DbSet<AnnotationClass> AnnotationsClasses { get; set; } public DbSet<AnnotationTag> AnnotationTags { get; set; } public DbSet<Tag> Tags { get; set; } public DbSet<SubTag> SubTags { get; set; } public DbSet<TagCategory> TagCategories { get; set; } + public DbSet<ConfigurationItem> ConfigurationItems { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { diff --git a/Backend/Core/Entities/ConfigurationItem.cs b/Backend/Core/Entities/ConfigurationItem.cs new file mode 100644 index 0000000..e0f822f --- /dev/null +++ b/Backend/Core/Entities/ConfigurationItem.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Core.Entities +{ + public class ConfigurationItem : BaseEntity + { + public string Value { get; set; } + public string Key { get; set; } + } +} diff --git a/Backend/Core/Seeding/Seeder.cs b/Backend/Core/Seeding/Seeder.cs index 7fe2795..33b2374 100644 --- a/Backend/Core/Seeding/Seeder.cs +++ b/Backend/Core/Seeding/Seeder.cs @@ -21,6 +21,13 @@ namespace Core.Seeding DummyTags.AddDummyTags(context); context.SaveChanges(); + ConfigurationItem configurationItem = new ConfigurationItem() + { + Key = Constants.Constants.RequiredAnnotationsKey, + Value = "3" + }; + context.ConfigurationItems.Add(configurationItem); + AddTagInstance(context); context.SaveChanges(); } @@ -126,6 +133,14 @@ namespace Core.Seeding Password = BCrypt.Net.BCrypt.HashPassword("123a456b789c") }; context.Users.Add(admin); + + ConfigurationItem configurationItem = new ConfigurationItem() + { + Key = Constants.Constants.RequiredAnnotationsKey, + Value = "3" + }; + context.ConfigurationItems.Add(configurationItem); + context.SaveChanges(); } } diff --git a/Backend/Core/Services/DocumentService/DocumentServiceEF.cs b/Backend/Core/Services/DocumentService/DocumentServiceEF.cs index fc7fc92..5fe689d 100644 --- a/Backend/Core/Services/DocumentService/DocumentServiceEF.cs +++ b/Backend/Core/Services/DocumentService/DocumentServiceEF.cs @@ -12,7 +12,6 @@ using System.Web; using AutoMapper; using Models.Users; using Ganss.XSS; -using Core.StaticConfig; namespace Core.Services.DocumentService { @@ -41,8 +40,7 @@ namespace Core.Services.DocumentService public void AddDocuments(DocumentAddRequest request, Guid userId) { User user = databaseContext.Users.Single(u => u.Id == userId); - - var users = databaseContext.Users.Select(u => u).ToList(); + int requiredAnnotations = int.Parse(databaseContext.ConfigurationItems.Single(ci => ci.Key == Constants.Constants.RequiredAnnotationsKey).Value); foreach (var documentInfo in request.Documents) { @@ -50,14 +48,14 @@ namespace Core.Services.DocumentService { // TODO hardcoded UTF-8 - maybe do something smarter var documentContent = Encoding.UTF8.GetString(Convert.FromBase64String(documentInfo.Content)); - SaveDocument(documentContent, user, documentInfo.Name, users); + SaveDocument(documentContent, user, documentInfo.Name, requiredAnnotations); } else if (documentInfo.Format == Models.Enums.EAddDocumentFormat.ZIP) { var (names, contents) = UnzipDocuments(documentInfo.Content); for (int i = 0; i < names.Count; i++) { - SaveDocument(contents[i], user, names[i], users); + SaveDocument(contents[i], user, names[i], requiredAnnotations); } } } @@ -92,7 +90,7 @@ namespace Core.Services.DocumentService return (names, contents); } - private void SaveDocument(string content, User userAdded, string documentName, List<User> users) + private void SaveDocument(string content, User userAdded, string documentName, int requiredAnnotations) { DocumentContent documentContent = new DocumentContent() { @@ -106,7 +104,7 @@ namespace Core.Services.DocumentService UserAdded = userAdded, Name = documentName, Length = documentContent.Content.Length, - RequiredAnnotations = GlobalConfiguration.RequiredAnnotations + RequiredAnnotations = requiredAnnotations }; databaseContext.DocumentContents.Add(documentContent); @@ -167,8 +165,15 @@ namespace Core.Services.DocumentService public void SetRequiredAnnotationsGlobal(int requiredAnnotations) { - GlobalConfiguration.RequiredAnnotations = requiredAnnotations; + var requiredAnnotationsItem = databaseContext.ConfigurationItems.Single(ci => ci.Key == Constants.Constants.RequiredAnnotationsKey); + requiredAnnotationsItem.Value = requiredAnnotations.ToString(); + databaseContext.SaveChanges(); } + public int GetRequiredAnnotationsGlobal() + { + var requiredAnnotationsItem = databaseContext.ConfigurationItems.Single(ci => ci.Key == Constants.Constants.RequiredAnnotationsKey); + return int.Parse(requiredAnnotationsItem.Value); + } } } diff --git a/Backend/Core/Services/DocumentService/IDocumentService.cs b/Backend/Core/Services/DocumentService/IDocumentService.cs index f77643f..0882815 100644 --- a/Backend/Core/Services/DocumentService/IDocumentService.cs +++ b/Backend/Core/Services/DocumentService/IDocumentService.cs @@ -18,5 +18,7 @@ namespace Core.Services.DocumentService public void SetRequiredAnnotationsForDocuments(SetRequiredAnnotationsRequest request); public void SetRequiredAnnotationsGlobal(int requiredAnnotations); + + public int GetRequiredAnnotationsGlobal(); } } diff --git a/Backend/Core/StaticConfig/GlobalConfiguration.cs b/Backend/Core/StaticConfig/GlobalConfiguration.cs deleted file mode 100644 index 1048034..0000000 --- a/Backend/Core/StaticConfig/GlobalConfiguration.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Core.StaticConfig -{ - public class GlobalConfiguration - { - // Default count of required annotations - private static Mutex RequiredAnnotationsMutex = new Mutex(); - private static int requiredAnnotations = 3; - public static int RequiredAnnotations - { - get { return requiredAnnotations; } - set - { - RequiredAnnotationsMutex.WaitOne(); - requiredAnnotations = value; - RequiredAnnotationsMutex.ReleaseMutex(); - } - } - } -} diff --git a/Backend/Models/Documents/GetRequiredAnnotationsGlobalResponse.cs b/Backend/Models/Documents/GetRequiredAnnotationsGlobalResponse.cs new file mode 100644 index 0000000..71053bd --- /dev/null +++ b/Backend/Models/Documents/GetRequiredAnnotationsGlobalResponse.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Models.Documents +{ + public class GetRequiredAnnotationsGlobalResponse + { + public int RequiredAnnotationsGlobal { get; set; } + } +} -- GitLab From 9eaf82069d74a6f4939064d805d9d68daf64e265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20Barti=C4=8Dka?= <aitakaitov@gmail.com> Date: Wed, 27 Apr 2022 11:31:56 +0200 Subject: [PATCH 04/12] Database migration added --- .../Migrations/20220427093145_V4.Designer.cs | 414 ++++++++++++++++++ .../Backend/Migrations/20220427093145_V4.cs | 32 ++ .../DatabaseContextModelSnapshot.cs | 19 + 3 files changed, 465 insertions(+) create mode 100644 Backend/Backend/Migrations/20220427093145_V4.Designer.cs create mode 100644 Backend/Backend/Migrations/20220427093145_V4.cs diff --git a/Backend/Backend/Migrations/20220427093145_V4.Designer.cs b/Backend/Backend/Migrations/20220427093145_V4.Designer.cs new file mode 100644 index 0000000..eaa1983 --- /dev/null +++ b/Backend/Backend/Migrations/20220427093145_V4.Designer.cs @@ -0,0 +1,414 @@ +// <auto-generated /> +using System; +using Core.Contexts; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace RestAPI.Migrations +{ + [DbContext(typeof(DatabaseContext))] + [Migration("20220427093145_V4")] + partial class V4 + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.3") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("AnnotationClass", b => + { + b.Property<Guid>("AnnotationsId") + .HasColumnType("uuid"); + + b.Property<Guid>("ClassesId") + .HasColumnType("uuid"); + + b.HasKey("AnnotationsId", "ClassesId"); + + b.HasIndex("ClassesId"); + + b.ToTable("AnnotationClass"); + }); + + modelBuilder.Entity("Core.Entities.Annotation", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property<DateTime>("DateAssigned") + .HasColumnType("timestamp with time zone"); + + b.Property<DateTime>("DateLastChanged") + .HasColumnType("timestamp with time zone"); + + b.Property<Guid>("DocumentId") + .HasColumnType("uuid"); + + b.Property<string>("Note") + .IsRequired() + .HasColumnType("text"); + + b.Property<int>("State") + .HasColumnType("integer"); + + b.Property<Guid>("UserAssignedId") + .HasColumnType("uuid"); + + b.Property<Guid>("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("DocumentId"); + + b.HasIndex("UserAssignedId"); + + b.HasIndex("UserId"); + + b.ToTable("Annotations"); + }); + + modelBuilder.Entity("Core.Entities.AnnotationTag", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property<Guid>("AnnotationId") + .HasColumnType("uuid"); + + b.Property<Guid>("Instance") + .HasColumnType("uuid"); + + b.Property<int>("Length") + .HasColumnType("integer"); + + b.Property<string>("Note") + .IsRequired() + .HasColumnType("text"); + + b.Property<int>("Position") + .HasColumnType("integer"); + + b.Property<Guid?>("SubTagId") + .HasColumnType("uuid"); + + b.Property<Guid>("TagId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("AnnotationId"); + + b.HasIndex("SubTagId"); + + b.HasIndex("TagId"); + + b.ToTable("AnnotationTags"); + }); + + modelBuilder.Entity("Core.Entities.Class", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property<string>("Color") + .IsRequired() + .HasColumnType("text"); + + b.Property<string>("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Classes"); + }); + + modelBuilder.Entity("Core.Entities.ConfigurationItem", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property<string>("Key") + .IsRequired() + .HasColumnType("text"); + + b.Property<string>("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("ConfigurationItems"); + }); + + modelBuilder.Entity("Core.Entities.Document", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property<Guid?>("ContentId") + .HasColumnType("uuid"); + + b.Property<DateTime>("DateAdded") + .HasColumnType("timestamp with time zone"); + + b.Property<int>("Length") + .HasColumnType("integer"); + + b.Property<string>("Name") + .HasColumnType("text"); + + b.Property<int>("RequiredAnnotations") + .HasColumnType("integer"); + + b.Property<Guid?>("UserAddedId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ContentId"); + + b.HasIndex("UserAddedId"); + + b.ToTable("Documents"); + }); + + modelBuilder.Entity("Core.Entities.DocumentContent", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property<string>("Content") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("DocumentContents"); + }); + + modelBuilder.Entity("Core.Entities.SubTag", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property<string>("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property<Guid>("TagId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("TagId"); + + b.ToTable("SubTags"); + }); + + modelBuilder.Entity("Core.Entities.Tag", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property<Guid>("CategoryId") + .HasColumnType("uuid"); + + b.Property<string>("Color") + .IsRequired() + .HasColumnType("text"); + + b.Property<string>("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("CategoryId"); + + b.ToTable("Tags"); + }); + + modelBuilder.Entity("Core.Entities.TagCategory", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property<string>("Color") + .HasColumnType("text"); + + b.Property<string>("Description") + .HasColumnType("text"); + + b.Property<string>("Name") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("TagCategories"); + }); + + modelBuilder.Entity("Core.Entities.User", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property<string>("Name") + .HasColumnType("text"); + + b.Property<string>("Password") + .HasColumnType("text"); + + b.Property<int>("Role") + .HasColumnType("integer"); + + b.Property<string>("Surname") + .HasColumnType("text"); + + b.Property<string>("Username") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("AnnotationClass", b => + { + b.HasOne("Core.Entities.Annotation", null) + .WithMany() + .HasForeignKey("AnnotationsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Core.Entities.Class", null) + .WithMany() + .HasForeignKey("ClassesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Core.Entities.Annotation", b => + { + b.HasOne("Core.Entities.Document", "Document") + .WithMany() + .HasForeignKey("DocumentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Core.Entities.User", "UserAssigned") + .WithMany() + .HasForeignKey("UserAssignedId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Core.Entities.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Document"); + + b.Navigation("User"); + + b.Navigation("UserAssigned"); + }); + + modelBuilder.Entity("Core.Entities.AnnotationTag", b => + { + b.HasOne("Core.Entities.Annotation", "Annotation") + .WithMany() + .HasForeignKey("AnnotationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Core.Entities.SubTag", "SubTag") + .WithMany() + .HasForeignKey("SubTagId"); + + b.HasOne("Core.Entities.Tag", "Tag") + .WithMany() + .HasForeignKey("TagId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Annotation"); + + b.Navigation("SubTag"); + + b.Navigation("Tag"); + }); + + modelBuilder.Entity("Core.Entities.Document", b => + { + b.HasOne("Core.Entities.DocumentContent", "Content") + .WithMany() + .HasForeignKey("ContentId"); + + b.HasOne("Core.Entities.User", "UserAdded") + .WithMany() + .HasForeignKey("UserAddedId"); + + b.Navigation("Content"); + + b.Navigation("UserAdded"); + }); + + modelBuilder.Entity("Core.Entities.SubTag", b => + { + b.HasOne("Core.Entities.Tag", "Tag") + .WithMany() + .HasForeignKey("TagId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tag"); + }); + + modelBuilder.Entity("Core.Entities.Tag", b => + { + b.HasOne("Core.Entities.TagCategory", "Category") + .WithMany() + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Backend/Backend/Migrations/20220427093145_V4.cs b/Backend/Backend/Migrations/20220427093145_V4.cs new file mode 100644 index 0000000..1b28fea --- /dev/null +++ b/Backend/Backend/Migrations/20220427093145_V4.cs @@ -0,0 +1,32 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace RestAPI.Migrations +{ + public partial class V4 : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "ConfigurationItems", + columns: table => new + { + Id = table.Column<Guid>(type: "uuid", nullable: false), + Value = table.Column<string>(type: "text", nullable: false), + Key = table.Column<string>(type: "text", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ConfigurationItems", x => x.Id); + }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ConfigurationItems"); + } + } +} diff --git a/Backend/Backend/Migrations/DatabaseContextModelSnapshot.cs b/Backend/Backend/Migrations/DatabaseContextModelSnapshot.cs index 5f9ffb3..66256dc 100644 --- a/Backend/Backend/Migrations/DatabaseContextModelSnapshot.cs +++ b/Backend/Backend/Migrations/DatabaseContextModelSnapshot.cs @@ -138,6 +138,25 @@ namespace RestAPI.Migrations b.ToTable("Classes"); }); + modelBuilder.Entity("Core.Entities.ConfigurationItem", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property<string>("Key") + .IsRequired() + .HasColumnType("text"); + + b.Property<string>("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("ConfigurationItems"); + }); + modelBuilder.Entity("Core.Entities.Document", b => { b.Property<Guid>("Id") -- GitLab From 3cee56d3be15d94be8afa0157d191d6602c72e1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20Barti=C4=8Dka?= <aitakaitov@gmail.com> Date: Thu, 5 May 2022 15:25:08 +0200 Subject: [PATCH 05/12] Annotation state returned with document list info --- Backend/Core/MapperProfiles/UserProfileEF.cs | 3 ++- .../DocumentService/DocumentServiceEF.cs | 14 +++++++++++++- Backend/Models/Documents/DocumentListInfo.cs | 2 +- Backend/Models/Users/DocumentUserInfo.cs | 18 ++++++++++++++++++ 4 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 Backend/Models/Users/DocumentUserInfo.cs diff --git a/Backend/Core/MapperProfiles/UserProfileEF.cs b/Backend/Core/MapperProfiles/UserProfileEF.cs index b409924..07486ec 100644 --- a/Backend/Core/MapperProfiles/UserProfileEF.cs +++ b/Backend/Core/MapperProfiles/UserProfileEF.cs @@ -13,7 +13,8 @@ namespace Core.MapperProfiles { public UserProfileEF() { - CreateMap<User, UserInfo>(); + CreateMap<User, UserInfo>(); + CreateMap<User, DocumentUserInfo>(); } } } diff --git a/Backend/Core/Services/DocumentService/DocumentServiceEF.cs b/Backend/Core/Services/DocumentService/DocumentServiceEF.cs index 5fe689d..4df9466 100644 --- a/Backend/Core/Services/DocumentService/DocumentServiceEF.cs +++ b/Backend/Core/Services/DocumentService/DocumentServiceEF.cs @@ -12,6 +12,7 @@ using System.Web; using AutoMapper; using Models.Users; using Ganss.XSS; +using Microsoft.EntityFrameworkCore; namespace Core.Services.DocumentService { @@ -137,7 +138,18 @@ namespace Core.Services.DocumentService foreach (var document in documents.GetRange(firstIndex, pageSize)) { var annotatingUsers = databaseContext.Annotations.Where(a => a.Document == document).Select(a => a.User).ToList(); - List<UserInfo> annotatingUsersDto = annotatingUsers.Select(a => mapper.Map<UserInfo>(a)).ToList(); + List<DocumentUserInfo> annotatingUsersDto = new(); + + // Include annotation state + foreach (var annotatingUser in annotatingUsers) + { + var annotation = databaseContext.Annotations + .Include(a => a.Document) + .Single(a => a.Document == document && a.User == annotatingUser); + var dui = mapper.Map<DocumentUserInfo>(annotatingUser); + dui.State = annotation.State; + annotatingUsersDto.Add(dui); + } DocumentListInfo dai = mapper.Map<DocumentListInfo>(document); dai.AnnotatingUsers = annotatingUsersDto; diff --git a/Backend/Models/Documents/DocumentListInfo.cs b/Backend/Models/Documents/DocumentListInfo.cs index 3f1ba24..e7c8a30 100644 --- a/Backend/Models/Documents/DocumentListInfo.cs +++ b/Backend/Models/Documents/DocumentListInfo.cs @@ -14,5 +14,5 @@ public class DocumentListInfo public string Name { get; set; } public int Length { get; set; } public int RequiredAnnotations { get; set; } - public List<UserInfo> AnnotatingUsers { get; set; } = new(); + public List<DocumentUserInfo> AnnotatingUsers { get; set; } = new(); } diff --git a/Backend/Models/Users/DocumentUserInfo.cs b/Backend/Models/Users/DocumentUserInfo.cs new file mode 100644 index 0000000..e035944 --- /dev/null +++ b/Backend/Models/Users/DocumentUserInfo.cs @@ -0,0 +1,18 @@ +using Models.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Models.Users +{ + public class DocumentUserInfo + { + public Guid Id { get; set; } + public string Username { get; set; } + public string Name { get; set; } + public string Surname { get; set; } + public EState State { get; set; } + } +} -- GitLab From 19b68a2e9efb6b81550a552023a1f835c00287aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=CC=81s=CC=8C=20Vlc=CC=8Cek?= <vlcek@net-inout.cz> Date: Thu, 5 May 2022 16:56:03 +0200 Subject: [PATCH 06/12] API client regenerated --- webapp/api/api.ts | 1952 ++++++++++++++++++++------------------------- 1 file changed, 861 insertions(+), 1091 deletions(-) diff --git a/webapp/api/api.ts b/webapp/api/api.ts index e4725da..6035620 100644 --- a/webapp/api/api.ts +++ b/webapp/api/api.ts @@ -5,434 +5,457 @@ * KIV/ASWI ZÄŚU PlzeĹ, 2022 * * The version of the OpenAPI document: 0.1.1 - * + * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ + import { Configuration } from './configuration'; import globalAxios, { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; // Some imports not used depending on template conditions // @ts-ignore -import { - DUMMY_BASE_URL, - assertParamExists, - setApiKeyToObject, - setBasicAuthToObject, - setBearerAuthToObject, - setOAuthToObject, - setSearchParams, - serializeDataIfNeeded, - toPathString, - createRequestFunction, -} from './common'; +import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from './common'; // @ts-ignore -import { - BASE_PATH, - COLLECTION_FORMATS, - RequestArgs, - BaseAPI, - RequiredError, -} from './base'; +import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from './base'; /** - * + * * @export * @interface AnnotationInfo */ export interface AnnotationInfo { /** - * + * * @type {string} * @memberof AnnotationInfo */ - sourceDocumentContent?: string | null; + 'sourceDocumentContent'?: string | null; /** - * + * * @type {string} * @memberof AnnotationInfo */ - documentToRender?: string | null; + 'documentToRender'?: string | null; /** - * + * * @type {Array<number>} * @memberof AnnotationInfo */ - tagStartPositions?: Array<number> | null; + 'tagStartPositions'?: Array<number> | null; /** - * + * * @type {Array<number>} * @memberof AnnotationInfo */ - tagLengths?: Array<number> | null; + 'tagLengths'?: Array<number> | null; /** - * + * * @type {EState} * @memberof AnnotationInfo */ - state?: EState; + 'state'?: EState; /** - * + * * @type {EDocumentType} * @memberof AnnotationInfo */ - type?: EDocumentType; + 'type'?: EDocumentType; /** - * + * * @type {string} * @memberof AnnotationInfo */ - note?: string | null; + 'note'?: string | null; /** - * + * * @type {Array<TagInstanceInfo>} * @memberof AnnotationInfo */ - tagInstances?: Array<TagInstanceInfo> | null; + 'tagInstances'?: Array<TagInstanceInfo> | null; } /** - * + * * @export * @interface AnnotationInstanceAddRequest */ export interface AnnotationInstanceAddRequest { /** - * + * * @type {number} * @memberof AnnotationInstanceAddRequest */ - position?: number; + 'position'?: number; /** - * + * * @type {number} * @memberof AnnotationInstanceAddRequest */ - length?: number; + 'length'?: number; /** - * + * * @type {ETagType} * @memberof AnnotationInstanceAddRequest */ - type?: ETagType; + 'type'?: ETagType; /** - * + * * @type {string} * @memberof AnnotationInstanceAddRequest */ - id?: string; + 'id'?: string; /** - * + * * @type {string} * @memberof AnnotationInstanceAddRequest */ - instanceId?: string | null; + 'instanceId'?: string | null; } /** - * + * * @export * @interface AnnotationListInfo */ export interface AnnotationListInfo { /** - * + * * @type {string} * @memberof AnnotationListInfo */ - documentName?: string | null; + 'documentName'?: string | null; /** - * + * * @type {EState} * @memberof AnnotationListInfo */ - state?: EState; + 'state'?: EState; /** - * + * * @type {string} * @memberof AnnotationListInfo */ - annotationId?: string; + 'annotationId'?: string; } /** - * + * * @export * @interface AnnotationListResponse */ export interface AnnotationListResponse { /** - * + * * @type {Array<AnnotationListInfo>} * @memberof AnnotationListResponse */ - annotations?: Array<AnnotationListInfo> | null; + 'annotations'?: Array<AnnotationListInfo> | null; } /** - * + * * @export * @interface AnnotationsAddRequest */ export interface AnnotationsAddRequest { /** - * + * * @type {Array<string>} * @memberof AnnotationsAddRequest */ - userIdList?: Array<string> | null; + 'userIdList'?: Array<string> | null; /** - * + * * @type {Array<string>} * @memberof AnnotationsAddRequest */ - documentIdList?: Array<string> | null; + 'documentIdList'?: Array<string> | null; } /** - * + * * @export * @interface ChangeUserInfoRequest */ export interface ChangeUserInfoRequest { /** - * + * * @type {string} * @memberof ChangeUserInfoRequest */ - password?: string | null; + 'password'?: string | null; /** - * + * * @type {string} * @memberof ChangeUserInfoRequest */ - username?: string | null; + 'username'?: string | null; /** - * + * * @type {string} * @memberof ChangeUserInfoRequest */ - name?: string | null; + 'name'?: string | null; /** - * + * * @type {string} * @memberof ChangeUserInfoRequest */ - surname?: string | null; + 'surname'?: string | null; /** - * + * * @type {ERole} * @memberof ChangeUserInfoRequest */ - role?: ERole; + 'role'?: ERole; } /** - * + * * @export * @interface ClientInfo */ export interface ClientInfo { /** - * + * * @type {boolean} * @memberof ClientInfo */ - isLogged?: boolean; + 'isLogged'?: boolean; /** - * + * * @type {User} * @memberof ClientInfo */ - loggedUser?: User; + 'loggedUser'?: User; /** - * + * * @type {string} * @memberof ClientInfo */ - ip?: string | null; + 'ip'?: string | null; } /** - * + * * @export * @interface CreateUserRequest */ export interface CreateUserRequest { /** - * + * * @type {string} * @memberof CreateUserRequest */ - username?: string | null; + 'username'?: string | null; /** - * + * * @type {string} * @memberof CreateUserRequest */ - password?: string | null; + 'password'?: string | null; /** - * + * * @type {string} * @memberof CreateUserRequest */ - name?: string | null; + 'name'?: string | null; /** - * + * * @type {string} * @memberof CreateUserRequest */ - surname?: string | null; + 'surname'?: string | null; /** - * + * * @type {ERole} * @memberof CreateUserRequest */ - role?: ERole; + 'role'?: ERole; } /** - * + * * @export * @interface DocumentAddInfo */ export interface DocumentAddInfo { /** - * + * * @type {string} * @memberof DocumentAddInfo */ - name?: string | null; + 'name'?: string | null; /** - * + * * @type {EAddDocumentFormat} * @memberof DocumentAddInfo */ - format?: EAddDocumentFormat; + 'format'?: EAddDocumentFormat; /** - * + * * @type {string} * @memberof DocumentAddInfo */ - content?: string | null; + 'content'?: string | null; } /** - * + * * @export * @interface DocumentAddRequest */ export interface DocumentAddRequest { /** - * + * * @type {Array<DocumentAddInfo>} * @memberof DocumentAddRequest */ - documents?: Array<DocumentAddInfo> | null; + 'documents'?: Array<DocumentAddInfo> | null; } /** - * + * * @export * @interface DocumentListInfo */ export interface DocumentListInfo { /** - * + * * @type {string} * @memberof DocumentListInfo */ - id?: string; + 'id'?: string; /** - * + * * @type {string} * @memberof DocumentListInfo */ - name?: string | null; + 'name'?: string | null; /** - * + * * @type {number} * @memberof DocumentListInfo */ - length?: number; + 'length'?: number; /** - * + * * @type {number} * @memberof DocumentListInfo */ - requiredAnnotations?: number; + 'requiredAnnotations'?: number; /** - * - * @type {Array<UserInfo>} + * + * @type {Array<DocumentUserInfo>} * @memberof DocumentListInfo */ - annotatingUsers?: Array<UserInfo> | null; + 'annotatingUsers'?: Array<DocumentUserInfo> | null; } /** - * + * * @export * @interface DocumentListResponse */ export interface DocumentListResponse { /** - * + * * @type {number} * @memberof DocumentListResponse */ - totalCount?: number; + 'totalCount'?: number; /** - * + * * @type {number} * @memberof DocumentListResponse */ - pageCount?: number; + 'pageCount'?: number; /** - * + * * @type {number} * @memberof DocumentListResponse */ - pageIndex?: number; + 'pageIndex'?: number; /** - * + * * @type {Array<DocumentListInfo>} * @memberof DocumentListResponse */ - documents?: Array<DocumentListInfo> | null; + 'documents'?: Array<DocumentListInfo> | null; } /** - * + * + * @export + * @interface DocumentUserInfo + */ +export interface DocumentUserInfo { + /** + * + * @type {string} + * @memberof DocumentUserInfo + */ + 'id'?: string; + /** + * + * @type {string} + * @memberof DocumentUserInfo + */ + 'username'?: string | null; + /** + * + * @type {string} + * @memberof DocumentUserInfo + */ + 'name'?: string | null; + /** + * + * @type {string} + * @memberof DocumentUserInfo + */ + 'surname'?: string | null; + /** + * + * @type {EState} + * @memberof DocumentUserInfo + */ + 'state'?: EState; +} +/** + * * @export * @enum {string} */ export const EAddDocumentFormat = { Zip: 'ZIP', - Textfile: 'TEXTFILE', + Textfile: 'TEXTFILE' } as const; -export type EAddDocumentFormat = - typeof EAddDocumentFormat[keyof typeof EAddDocumentFormat]; +export type EAddDocumentFormat = typeof EAddDocumentFormat[keyof typeof EAddDocumentFormat]; + /** - * + * * @export * @enum {string} */ export const EDocumentType = { Html: 'HTML', - Text: 'TEXT', + Text: 'TEXT' } as const; export type EDocumentType = typeof EDocumentType[keyof typeof EDocumentType]; + /** - * + * * @export * @enum {string} */ export const ERole = { Annotator: 'ANNOTATOR', - Administrator: 'ADMINISTRATOR', + Administrator: 'ADMINISTRATOR' } as const; export type ERole = typeof ERole[keyof typeof ERole]; + /** - * + * * @export * @enum {string} */ @@ -440,76 +463,91 @@ export type ERole = typeof ERole[keyof typeof ERole]; export const EState = { Done: 'DONE', InProgress: 'IN_PROGRESS', - New: 'NEW', + New: 'NEW' } as const; export type EState = typeof EState[keyof typeof EState]; + /** - * + * * @export * @enum {string} */ export const ETagType = { Tag: 'TAG', - Subtag: 'SUBTAG', + Subtag: 'SUBTAG' } as const; export type ETagType = typeof ETagType[keyof typeof ETagType]; + /** - * + * + * @export + * @interface GetRequiredAnnotationsGlobalResponse + */ +export interface GetRequiredAnnotationsGlobalResponse { + /** + * + * @type {number} + * @memberof GetRequiredAnnotationsGlobalResponse + */ + 'requiredAnnotationsGlobal'?: number; +} +/** + * * @export * @interface LoginRequest */ export interface LoginRequest { /** - * + * * @type {string} * @memberof LoginRequest */ - username?: string | null; + 'username'?: string | null; /** - * + * * @type {string} * @memberof LoginRequest */ - password?: string | null; + 'password'?: string | null; } /** - * + * * @export * @interface LoginResponse */ export interface LoginResponse { /** - * + * * @type {boolean} * @memberof LoginResponse */ - ok?: boolean; + 'ok'?: boolean; /** - * + * * @type {string} * @memberof LoginResponse */ - token?: string | null; + 'token'?: string | null; /** - * + * * @type {string} * @memberof LoginResponse */ - expiration?: string; + 'expiration'?: string; /** - * + * * @type {ERole} * @memberof LoginResponse */ - role?: ERole; + 'role'?: ERole; } /** - * + * * @export * @interface ProblemDetails */ @@ -517,301 +555,333 @@ export interface ProblemDetails { [key: string]: any | any; /** - * + * * @type {string} * @memberof ProblemDetails */ - type?: string | null; + 'type'?: string | null; /** - * + * * @type {string} * @memberof ProblemDetails */ - title?: string | null; + 'title'?: string | null; /** - * + * * @type {number} * @memberof ProblemDetails */ - status?: number | null; + 'status'?: number | null; /** - * + * * @type {string} * @memberof ProblemDetails */ - detail?: string | null; + 'detail'?: string | null; /** - * + * * @type {string} * @memberof ProblemDetails */ - instance?: string | null; + 'instance'?: string | null; } /** - * + * + * @export + * @interface SetRequiredAnnotationsGlobalRequest + */ +export interface SetRequiredAnnotationsGlobalRequest { + /** + * + * @type {number} + * @memberof SetRequiredAnnotationsGlobalRequest + */ + 'requiredAnnotations'?: number; +} +/** + * + * @export + * @interface SetRequiredAnnotationsRequest + */ +export interface SetRequiredAnnotationsRequest { + /** + * + * @type {number} + * @memberof SetRequiredAnnotationsRequest + */ + 'requiredAnnotations'?: number; + /** + * + * @type {Array<string>} + * @memberof SetRequiredAnnotationsRequest + */ + 'documentIds'?: Array<string> | null; +} +/** + * * @export * @interface SubTagInfo */ export interface SubTagInfo { /** - * + * * @type {string} * @memberof SubTagInfo */ - id?: string; + 'id'?: string; /** - * + * * @type {string} * @memberof SubTagInfo */ - name?: string | null; + 'name'?: string | null; /** - * + * * @type {string} * @memberof SubTagInfo */ - description?: string | null; + 'description'?: string | null; } /** - * + * * @export * @interface TagCategoryInfo */ export interface TagCategoryInfo { /** - * + * * @type {string} * @memberof TagCategoryInfo */ - id?: string; + 'id'?: string; /** - * + * * @type {string} * @memberof TagCategoryInfo */ - name?: string | null; + 'name'?: string | null; /** - * + * * @type {string} * @memberof TagCategoryInfo */ - description?: string | null; + 'description'?: string | null; /** - * + * * @type {string} * @memberof TagCategoryInfo */ - color?: string | null; + 'color'?: string | null; /** - * + * * @type {Array<TagInfo>} * @memberof TagCategoryInfo */ - tags?: Array<TagInfo> | null; + 'tags'?: Array<TagInfo> | null; } /** - * + * * @export * @interface TagInfo */ export interface TagInfo { /** - * + * * @type {string} * @memberof TagInfo */ - id?: string; + 'id'?: string; /** - * + * * @type {string} * @memberof TagInfo */ - name?: string | null; + 'name'?: string | null; /** - * + * * @type {string} * @memberof TagInfo */ - description?: string | null; + 'description'?: string | null; /** - * + * * @type {string} * @memberof TagInfo */ - color?: string | null; + 'color'?: string | null; /** - * + * * @type {Array<SubTagInfo>} * @memberof TagInfo */ - subTags?: Array<SubTagInfo> | null; + 'subTags'?: Array<SubTagInfo> | null; } /** - * + * * @export * @interface TagInstanceInfo */ export interface TagInstanceInfo { /** - * + * * @type {string} * @memberof TagInstanceInfo */ - occurenceId?: string; + 'occurenceId'?: string; /** - * + * * @type {string} * @memberof TagInstanceInfo */ - tagName?: string | null; + 'tagName'?: string | null; /** - * + * * @type {string} * @memberof TagInstanceInfo */ - tagId?: string; + 'tagId'?: string; /** - * + * * @type {string} * @memberof TagInstanceInfo */ - tagCategoryName?: string | null; + 'tagCategoryName'?: string | null; /** - * + * * @type {string} * @memberof TagInstanceInfo */ - tagCategoryId?: string; + 'tagCategoryId'?: string; /** - * + * * @type {string} * @memberof TagInstanceInfo */ - subTagName?: string | null; + 'subTagName'?: string | null; /** - * + * * @type {string} * @memberof TagInstanceInfo */ - subTagId?: string | null; + 'subTagId'?: string | null; /** - * + * * @type {string} * @memberof TagInstanceInfo */ - instance?: string; + 'instance'?: string; /** - * + * * @type {number} * @memberof TagInstanceInfo */ - position?: number; + 'position'?: number; /** - * + * * @type {number} * @memberof TagInstanceInfo */ - length?: number; + 'length'?: number; /** - * + * * @type {string} * @memberof TagInstanceInfo */ - note?: string | null; + 'note'?: string | null; } /** - * + * * @export * @interface TagTreeResponse */ export interface TagTreeResponse { /** - * + * * @type {Array<TagCategoryInfo>} * @memberof TagTreeResponse */ - tagCategories?: Array<TagCategoryInfo> | null; + 'tagCategories'?: Array<TagCategoryInfo> | null; } /** - * + * * @export * @interface User */ export interface User { /** - * + * * @type {string} * @memberof User */ - id?: string; + 'id'?: string; /** - * + * * @type {string} * @memberof User */ - username?: string | null; + 'username'?: string | null; /** - * + * * @type {string} * @memberof User */ - name?: string | null; + 'name'?: string | null; /** - * + * * @type {string} * @memberof User */ - surname?: string | null; + 'surname'?: string | null; /** - * + * * @type {ERole} * @memberof User */ - role?: ERole; + 'role'?: ERole; } /** - * + * * @export * @interface UserInfo */ export interface UserInfo { /** - * + * * @type {string} * @memberof UserInfo */ - id?: string; + 'id'?: string; /** - * + * * @type {string} * @memberof UserInfo */ - username?: string | null; + 'username'?: string | null; /** - * + * * @type {string} * @memberof UserInfo */ - name?: string | null; + 'name'?: string | null; /** - * + * * @type {string} * @memberof UserInfo */ - surname?: string | null; + 'surname'?: string | null; } /** - * + * * @export * @interface UserList */ export interface UserList { /** - * + * * @type {Array<UserInfo>} * @memberof UserList */ - users?: Array<UserInfo> | null; + 'users'?: Array<UserInfo> | null; } /** @@ -821,21 +891,16 @@ export interface UserList { export const AnnotationApiAxiosParamCreator = function (configuration?: Configuration) { return { /** - * - * @param {string} annotationId + * + * @param {string} annotationId * @param {*} [options] Override http request option. * @throws {RequiredError} */ - annotationAnnotationIdGet: async ( - annotationId: string, - options: AxiosRequestConfig = {} - ): Promise<RequestArgs> => { + annotationAnnotationIdGet: async (annotationId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { // verify required parameter 'annotationId' is not null or undefined - assertParamExists('annotationAnnotationIdGet', 'annotationId', annotationId); - const localVarPath = `/annotation/{annotationId}`.replace( - `{${'annotationId'}}`, - encodeURIComponent(String(annotationId)) - ); + assertParamExists('annotationAnnotationIdGet', 'annotationId', annotationId) + const localVarPath = `/annotation/{annotationId}` + .replace(`{${"annotationId"}}`, encodeURIComponent(String(annotationId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -843,18 +908,15 @@ export const AnnotationApiAxiosParamCreator = function (configuration?: Configur baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options }; + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; return { url: toPathString(localVarUrlObj), @@ -862,32 +924,20 @@ export const AnnotationApiAxiosParamCreator = function (configuration?: Configur }; }, /** - * - * @param {string} annotationId - * @param {string} occurenceId + * + * @param {string} annotationId + * @param {string} occurenceId * @param {*} [options] Override http request option. * @throws {RequiredError} */ - annotationAnnotationIdOccurenceIdDelete: async ( - annotationId: string, - occurenceId: string, - options: AxiosRequestConfig = {} - ): Promise<RequestArgs> => { + annotationAnnotationIdOccurenceIdDelete: async (annotationId: string, occurenceId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { // verify required parameter 'annotationId' is not null or undefined - assertParamExists( - 'annotationAnnotationIdOccurenceIdDelete', - 'annotationId', - annotationId - ); + assertParamExists('annotationAnnotationIdOccurenceIdDelete', 'annotationId', annotationId) // verify required parameter 'occurenceId' is not null or undefined - assertParamExists( - 'annotationAnnotationIdOccurenceIdDelete', - 'occurenceId', - occurenceId - ); + assertParamExists('annotationAnnotationIdOccurenceIdDelete', 'occurenceId', occurenceId) const localVarPath = `/annotation/{annotationId}/{occurenceId}` - .replace(`{${'annotationId'}}`, encodeURIComponent(String(annotationId))) - .replace(`{${'occurenceId'}}`, encodeURIComponent(String(occurenceId))); + .replace(`{${"annotationId"}}`, encodeURIComponent(String(annotationId))) + .replace(`{${"occurenceId"}}`, encodeURIComponent(String(occurenceId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -895,22 +945,15 @@ export const AnnotationApiAxiosParamCreator = function (configuration?: Configur baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: 'DELETE', - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; return { url: toPathString(localVarUrlObj), @@ -918,23 +961,17 @@ export const AnnotationApiAxiosParamCreator = function (configuration?: Configur }; }, /** - * - * @param {string} annotationId - * @param {AnnotationInstanceAddRequest} [annotationInstanceAddRequest] + * + * @param {string} annotationId + * @param {AnnotationInstanceAddRequest} [annotationInstanceAddRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - annotationAnnotationIdPost: async ( - annotationId: string, - annotationInstanceAddRequest?: AnnotationInstanceAddRequest, - options: AxiosRequestConfig = {} - ): Promise<RequestArgs> => { + annotationAnnotationIdPost: async (annotationId: string, annotationInstanceAddRequest?: AnnotationInstanceAddRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { // verify required parameter 'annotationId' is not null or undefined - assertParamExists('annotationAnnotationIdPost', 'annotationId', annotationId); - const localVarPath = `/annotation/{annotationId}`.replace( - `{${'annotationId'}}`, - encodeURIComponent(String(annotationId)) - ); + assertParamExists('annotationAnnotationIdPost', 'annotationId', annotationId) + const localVarPath = `/annotation/{annotationId}` + .replace(`{${"annotationId"}}`, encodeURIComponent(String(annotationId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -942,25 +979,18 @@ export const AnnotationApiAxiosParamCreator = function (configuration?: Configur baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options }; + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + + localVarHeaderParameter['Content-Type'] = 'application/json'; setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - localVarRequestOptions.data = serializeDataIfNeeded( - annotationInstanceAddRequest, - localVarRequestOptions, - configuration - ); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(annotationInstanceAddRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -968,15 +998,12 @@ export const AnnotationApiAxiosParamCreator = function (configuration?: Configur }; }, /** - * - * @param {AnnotationsAddRequest} [annotationsAddRequest] + * + * @param {AnnotationsAddRequest} [annotationsAddRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - annotationsPost: async ( - annotationsAddRequest?: AnnotationsAddRequest, - options: AxiosRequestConfig = {} - ): Promise<RequestArgs> => { + annotationsPost: async (annotationsAddRequest?: AnnotationsAddRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { const localVarPath = `/annotations`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -985,217 +1012,123 @@ export const AnnotationApiAxiosParamCreator = function (configuration?: Configur baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options }; + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + + localVarHeaderParameter['Content-Type'] = 'application/json'; setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - localVarRequestOptions.data = serializeDataIfNeeded( - annotationsAddRequest, - localVarRequestOptions, - configuration - ); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(annotationsAddRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), options: localVarRequestOptions, }; }, - }; + } }; /** * AnnotationApi - functional programming interface * @export */ -export const AnnotationApiFp = function (configuration?: Configuration) { - const localVarAxiosParamCreator = AnnotationApiAxiosParamCreator(configuration); +export const AnnotationApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = AnnotationApiAxiosParamCreator(configuration) return { /** - * - * @param {string} annotationId + * + * @param {string} annotationId * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async annotationAnnotationIdGet( - annotationId: string, - options?: AxiosRequestConfig - ): Promise< - (axios?: AxiosInstance, basePath?: string) => AxiosPromise<AnnotationInfo> - > { - const localVarAxiosArgs = - await localVarAxiosParamCreator.annotationAnnotationIdGet( - annotationId, - options - ); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + async annotationAnnotationIdGet(annotationId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AnnotationInfo>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.annotationAnnotationIdGet(annotationId, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** - * - * @param {string} annotationId - * @param {string} occurenceId + * + * @param {string} annotationId + * @param {string} occurenceId * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async annotationAnnotationIdOccurenceIdDelete( - annotationId: string, - occurenceId: string, - options?: AxiosRequestConfig - ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { - const localVarAxiosArgs = - await localVarAxiosParamCreator.annotationAnnotationIdOccurenceIdDelete( - annotationId, - occurenceId, - options - ); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + async annotationAnnotationIdOccurenceIdDelete(annotationId: string, occurenceId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.annotationAnnotationIdOccurenceIdDelete(annotationId, occurenceId, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** - * - * @param {string} annotationId - * @param {AnnotationInstanceAddRequest} [annotationInstanceAddRequest] + * + * @param {string} annotationId + * @param {AnnotationInstanceAddRequest} [annotationInstanceAddRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async annotationAnnotationIdPost( - annotationId: string, - annotationInstanceAddRequest?: AnnotationInstanceAddRequest, - options?: AxiosRequestConfig - ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { - const localVarAxiosArgs = - await localVarAxiosParamCreator.annotationAnnotationIdPost( - annotationId, - annotationInstanceAddRequest, - options - ); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + async annotationAnnotationIdPost(annotationId: string, annotationInstanceAddRequest?: AnnotationInstanceAddRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.annotationAnnotationIdPost(annotationId, annotationInstanceAddRequest, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** - * - * @param {AnnotationsAddRequest} [annotationsAddRequest] + * + * @param {AnnotationsAddRequest} [annotationsAddRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async annotationsPost( - annotationsAddRequest?: AnnotationsAddRequest, - options?: AxiosRequestConfig - ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.annotationsPost( - annotationsAddRequest, - options - ); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + async annotationsPost(annotationsAddRequest?: AnnotationsAddRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.annotationsPost(annotationsAddRequest, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, - }; + } }; /** * AnnotationApi - factory interface * @export */ -export const AnnotationApiFactory = function ( - configuration?: Configuration, - basePath?: string, - axios?: AxiosInstance -) { - const localVarFp = AnnotationApiFp(configuration); +export const AnnotationApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = AnnotationApiFp(configuration) return { /** - * - * @param {string} annotationId + * + * @param {string} annotationId * @param {*} [options] Override http request option. * @throws {RequiredError} */ - annotationAnnotationIdGet( - annotationId: string, - options?: any - ): AxiosPromise<AnnotationInfo> { - return localVarFp - .annotationAnnotationIdGet(annotationId, options) - .then((request) => request(axios, basePath)); + annotationAnnotationIdGet(annotationId: string, options?: any): AxiosPromise<AnnotationInfo> { + return localVarFp.annotationAnnotationIdGet(annotationId, options).then((request) => request(axios, basePath)); }, /** - * - * @param {string} annotationId - * @param {string} occurenceId + * + * @param {string} annotationId + * @param {string} occurenceId * @param {*} [options] Override http request option. * @throws {RequiredError} */ - annotationAnnotationIdOccurenceIdDelete( - annotationId: string, - occurenceId: string, - options?: any - ): AxiosPromise<void> { - return localVarFp - .annotationAnnotationIdOccurenceIdDelete( - annotationId, - occurenceId, - options - ) - .then((request) => request(axios, basePath)); + annotationAnnotationIdOccurenceIdDelete(annotationId: string, occurenceId: string, options?: any): AxiosPromise<void> { + return localVarFp.annotationAnnotationIdOccurenceIdDelete(annotationId, occurenceId, options).then((request) => request(axios, basePath)); }, /** - * - * @param {string} annotationId - * @param {AnnotationInstanceAddRequest} [annotationInstanceAddRequest] + * + * @param {string} annotationId + * @param {AnnotationInstanceAddRequest} [annotationInstanceAddRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - annotationAnnotationIdPost( - annotationId: string, - annotationInstanceAddRequest?: AnnotationInstanceAddRequest, - options?: any - ): AxiosPromise<void> { - return localVarFp - .annotationAnnotationIdPost( - annotationId, - annotationInstanceAddRequest, - options - ) - .then((request) => request(axios, basePath)); + annotationAnnotationIdPost(annotationId: string, annotationInstanceAddRequest?: AnnotationInstanceAddRequest, options?: any): AxiosPromise<void> { + return localVarFp.annotationAnnotationIdPost(annotationId, annotationInstanceAddRequest, options).then((request) => request(axios, basePath)); }, /** - * - * @param {AnnotationsAddRequest} [annotationsAddRequest] + * + * @param {AnnotationsAddRequest} [annotationsAddRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - annotationsPost( - annotationsAddRequest?: AnnotationsAddRequest, - options?: any - ): AxiosPromise<void> { - return localVarFp - .annotationsPost(annotationsAddRequest, options) - .then((request) => request(axios, basePath)); + annotationsPost(annotationsAddRequest?: AnnotationsAddRequest, options?: any): AxiosPromise<void> { + return localVarFp.annotationsPost(annotationsAddRequest, options).then((request) => request(axios, basePath)); }, }; }; @@ -1208,75 +1141,53 @@ export const AnnotationApiFactory = function ( */ export class AnnotationApi extends BaseAPI { /** - * - * @param {string} annotationId + * + * @param {string} annotationId * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof AnnotationApi */ public annotationAnnotationIdGet(annotationId: string, options?: AxiosRequestConfig) { - return AnnotationApiFp(this.configuration) - .annotationAnnotationIdGet(annotationId, options) - .then((request) => request(this.axios, this.basePath)); + return AnnotationApiFp(this.configuration).annotationAnnotationIdGet(annotationId, options).then((request) => request(this.axios, this.basePath)); } /** - * - * @param {string} annotationId - * @param {string} occurenceId + * + * @param {string} annotationId + * @param {string} occurenceId * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof AnnotationApi */ - public annotationAnnotationIdOccurenceIdDelete( - annotationId: string, - occurenceId: string, - options?: AxiosRequestConfig - ) { - return AnnotationApiFp(this.configuration) - .annotationAnnotationIdOccurenceIdDelete(annotationId, occurenceId, options) - .then((request) => request(this.axios, this.basePath)); + public annotationAnnotationIdOccurenceIdDelete(annotationId: string, occurenceId: string, options?: AxiosRequestConfig) { + return AnnotationApiFp(this.configuration).annotationAnnotationIdOccurenceIdDelete(annotationId, occurenceId, options).then((request) => request(this.axios, this.basePath)); } /** - * - * @param {string} annotationId - * @param {AnnotationInstanceAddRequest} [annotationInstanceAddRequest] + * + * @param {string} annotationId + * @param {AnnotationInstanceAddRequest} [annotationInstanceAddRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof AnnotationApi */ - public annotationAnnotationIdPost( - annotationId: string, - annotationInstanceAddRequest?: AnnotationInstanceAddRequest, - options?: AxiosRequestConfig - ) { - return AnnotationApiFp(this.configuration) - .annotationAnnotationIdPost( - annotationId, - annotationInstanceAddRequest, - options - ) - .then((request) => request(this.axios, this.basePath)); + public annotationAnnotationIdPost(annotationId: string, annotationInstanceAddRequest?: AnnotationInstanceAddRequest, options?: AxiosRequestConfig) { + return AnnotationApiFp(this.configuration).annotationAnnotationIdPost(annotationId, annotationInstanceAddRequest, options).then((request) => request(this.axios, this.basePath)); } /** - * - * @param {AnnotationsAddRequest} [annotationsAddRequest] + * + * @param {AnnotationsAddRequest} [annotationsAddRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof AnnotationApi */ - public annotationsPost( - annotationsAddRequest?: AnnotationsAddRequest, - options?: AxiosRequestConfig - ) { - return AnnotationApiFp(this.configuration) - .annotationsPost(annotationsAddRequest, options) - .then((request) => request(this.axios, this.basePath)); + public annotationsPost(annotationsAddRequest?: AnnotationsAddRequest, options?: AxiosRequestConfig) { + return AnnotationApiFp(this.configuration).annotationsPost(annotationsAddRequest, options).then((request) => request(this.axios, this.basePath)); } } + /** * AuthApi - axios parameter creator * @export @@ -1284,15 +1195,12 @@ export class AnnotationApi extends BaseAPI { export const AuthApiAxiosParamCreator = function (configuration?: Configuration) { return { /** - * - * @param {LoginRequest} [loginRequest] + * + * @param {LoginRequest} [loginRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - authLoginPost: async ( - loginRequest?: LoginRequest, - options: AxiosRequestConfig = {} - ): Promise<RequestArgs> => { + authLoginPost: async (loginRequest?: LoginRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { const localVarPath = `/auth/login`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -1301,25 +1209,18 @@ export const AuthApiAxiosParamCreator = function (configuration?: Configuration) baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options }; + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + + localVarHeaderParameter['Content-Type'] = 'application/json'; setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - localVarRequestOptions.data = serializeDataIfNeeded( - loginRequest, - localVarRequestOptions, - configuration - ); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(loginRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -1327,7 +1228,7 @@ export const AuthApiAxiosParamCreator = function (configuration?: Configuration) }; }, /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -1340,18 +1241,15 @@ export const AuthApiAxiosParamCreator = function (configuration?: Configuration) baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options }; + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; return { url: toPathString(localVarUrlObj), @@ -1359,7 +1257,7 @@ export const AuthApiAxiosParamCreator = function (configuration?: Configuration) }; }, /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -1372,144 +1270,93 @@ export const AuthApiAxiosParamCreator = function (configuration?: Configuration) baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options }; + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; return { url: toPathString(localVarUrlObj), options: localVarRequestOptions, }; }, - }; + } }; /** * AuthApi - functional programming interface * @export */ -export const AuthApiFp = function (configuration?: Configuration) { - const localVarAxiosParamCreator = AuthApiAxiosParamCreator(configuration); +export const AuthApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = AuthApiAxiosParamCreator(configuration) return { /** - * - * @param {LoginRequest} [loginRequest] + * + * @param {LoginRequest} [loginRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async authLoginPost( - loginRequest?: LoginRequest, - options?: AxiosRequestConfig - ): Promise< - (axios?: AxiosInstance, basePath?: string) => AxiosPromise<LoginResponse> - > { - const localVarAxiosArgs = await localVarAxiosParamCreator.authLoginPost( - loginRequest, - options - ); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + async authLoginPost(loginRequest?: LoginRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<LoginResponse>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.authLoginPost(loginRequest, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async authTestAaGet( - options?: AxiosRequestConfig - ): Promise< - (axios?: AxiosInstance, basePath?: string) => AxiosPromise<ClientInfo> - > { - const localVarAxiosArgs = await localVarAxiosParamCreator.authTestAaGet( - options - ); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + async authTestAaGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ClientInfo>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.authTestAaGet(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async authTestGet( - options?: AxiosRequestConfig - ): Promise< - (axios?: AxiosInstance, basePath?: string) => AxiosPromise<ClientInfo> - > { - const localVarAxiosArgs = await localVarAxiosParamCreator.authTestGet( - options - ); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + async authTestGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ClientInfo>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.authTestGet(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, - }; + } }; /** * AuthApi - factory interface * @export */ -export const AuthApiFactory = function ( - configuration?: Configuration, - basePath?: string, - axios?: AxiosInstance -) { - const localVarFp = AuthApiFp(configuration); +export const AuthApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = AuthApiFp(configuration) return { /** - * - * @param {LoginRequest} [loginRequest] + * + * @param {LoginRequest} [loginRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - authLoginPost( - loginRequest?: LoginRequest, - options?: any - ): AxiosPromise<LoginResponse> { - return localVarFp - .authLoginPost(loginRequest, options) - .then((request) => request(axios, basePath)); + authLoginPost(loginRequest?: LoginRequest, options?: any): AxiosPromise<LoginResponse> { + return localVarFp.authLoginPost(loginRequest, options).then((request) => request(axios, basePath)); }, /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} */ authTestAaGet(options?: any): AxiosPromise<ClientInfo> { - return localVarFp - .authTestAaGet(options) - .then((request) => request(axios, basePath)); + return localVarFp.authTestAaGet(options).then((request) => request(axios, basePath)); }, /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} */ authTestGet(options?: any): AxiosPromise<ClientInfo> { - return localVarFp - .authTestGet(options) - .then((request) => request(axios, basePath)); + return localVarFp.authTestGet(options).then((request) => request(axios, basePath)); }, }; }; @@ -1522,43 +1369,38 @@ export const AuthApiFactory = function ( */ export class AuthApi extends BaseAPI { /** - * - * @param {LoginRequest} [loginRequest] + * + * @param {LoginRequest} [loginRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof AuthApi */ public authLoginPost(loginRequest?: LoginRequest, options?: AxiosRequestConfig) { - return AuthApiFp(this.configuration) - .authLoginPost(loginRequest, options) - .then((request) => request(this.axios, this.basePath)); + return AuthApiFp(this.configuration).authLoginPost(loginRequest, options).then((request) => request(this.axios, this.basePath)); } /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof AuthApi */ public authTestAaGet(options?: AxiosRequestConfig) { - return AuthApiFp(this.configuration) - .authTestAaGet(options) - .then((request) => request(this.axios, this.basePath)); + return AuthApiFp(this.configuration).authTestAaGet(options).then((request) => request(this.axios, this.basePath)); } /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof AuthApi */ public authTestGet(options?: AxiosRequestConfig) { - return AuthApiFp(this.configuration) - .authTestGet(options) - .then((request) => request(this.axios, this.basePath)); + return AuthApiFp(this.configuration).authTestGet(options).then((request) => request(this.axios, this.basePath)); } } + /** * DocumentApi - axios parameter creator * @export @@ -1566,17 +1408,13 @@ export class AuthApi extends BaseAPI { export const DocumentApiAxiosParamCreator = function (configuration?: Configuration) { return { /** - * - * @param {number} [pageIndex] - * @param {number} [pageSize] + * + * @param {number} [pageIndex] + * @param {number} [pageSize] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - documentsGet: async ( - pageIndex?: number, - pageSize?: number, - options: AxiosRequestConfig = {} - ): Promise<RequestArgs> => { + documentsGet: async (pageIndex?: number, pageSize?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { const localVarPath = `/documents`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -1585,7 +1423,7 @@ export const DocumentApiAxiosParamCreator = function (configuration?: Configurat baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options }; + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -1597,14 +1435,11 @@ export const DocumentApiAxiosParamCreator = function (configuration?: Configurat localVarQueryParameter['pageSize'] = pageSize; } + + setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; return { url: toPathString(localVarUrlObj), @@ -1612,15 +1447,12 @@ export const DocumentApiAxiosParamCreator = function (configuration?: Configurat }; }, /** - * - * @param {DocumentAddRequest} [documentAddRequest] + * + * @param {DocumentAddRequest} [documentAddRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - documentsPost: async ( - documentAddRequest?: DocumentAddRequest, - options: AxiosRequestConfig = {} - ): Promise<RequestArgs> => { + documentsPost: async (documentAddRequest?: DocumentAddRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { const localVarPath = `/documents`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -1629,134 +1461,233 @@ export const DocumentApiAxiosParamCreator = function (configuration?: Configurat baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options }; + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + + localVarHeaderParameter['Content-Type'] = 'application/json'; setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(documentAddRequest, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, }; - localVarRequestOptions.data = serializeDataIfNeeded( - documentAddRequest, - localVarRequestOptions, - configuration - ); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + documentsRequiredAnnotationsGlobalGet: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => { + const localVarPath = `/documents/requiredAnnotations/global`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; return { url: toPathString(localVarUrlObj), options: localVarRequestOptions, }; }, - }; + /** + * + * @param {SetRequiredAnnotationsGlobalRequest} [setRequiredAnnotationsGlobalRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + documentsRequiredAnnotationsGlobalPost: async (setRequiredAnnotationsGlobalRequest?: SetRequiredAnnotationsGlobalRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { + const localVarPath = `/documents/requiredAnnotations/global`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(setRequiredAnnotationsGlobalRequest, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {SetRequiredAnnotationsRequest} [setRequiredAnnotationsRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + documentsRequiredAnnotationsPost: async (setRequiredAnnotationsRequest?: SetRequiredAnnotationsRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { + const localVarPath = `/documents/requiredAnnotations`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(setRequiredAnnotationsRequest, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } }; /** * DocumentApi - functional programming interface * @export */ -export const DocumentApiFp = function (configuration?: Configuration) { - const localVarAxiosParamCreator = DocumentApiAxiosParamCreator(configuration); +export const DocumentApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = DocumentApiAxiosParamCreator(configuration) return { /** - * - * @param {number} [pageIndex] - * @param {number} [pageSize] + * + * @param {number} [pageIndex] + * @param {number} [pageSize] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async documentsGet( - pageIndex?: number, - pageSize?: number, - options?: AxiosRequestConfig - ): Promise< - ( - axios?: AxiosInstance, - basePath?: string - ) => AxiosPromise<DocumentListResponse> - > { - const localVarAxiosArgs = await localVarAxiosParamCreator.documentsGet( - pageIndex, - pageSize, - options - ); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + async documentsGet(pageIndex?: number, pageSize?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DocumentListResponse>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.documentsGet(pageIndex, pageSize, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** - * - * @param {DocumentAddRequest} [documentAddRequest] + * + * @param {DocumentAddRequest} [documentAddRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async documentsPost( - documentAddRequest?: DocumentAddRequest, - options?: AxiosRequestConfig - ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.documentsPost( - documentAddRequest, - options - ); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + async documentsPost(documentAddRequest?: DocumentAddRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.documentsPost(documentAddRequest, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, - }; + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async documentsRequiredAnnotationsGlobalGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetRequiredAnnotationsGlobalResponse>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.documentsRequiredAnnotationsGlobalGet(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {SetRequiredAnnotationsGlobalRequest} [setRequiredAnnotationsGlobalRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async documentsRequiredAnnotationsGlobalPost(setRequiredAnnotationsGlobalRequest?: SetRequiredAnnotationsGlobalRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.documentsRequiredAnnotationsGlobalPost(setRequiredAnnotationsGlobalRequest, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {SetRequiredAnnotationsRequest} [setRequiredAnnotationsRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async documentsRequiredAnnotationsPost(setRequiredAnnotationsRequest?: SetRequiredAnnotationsRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.documentsRequiredAnnotationsPost(setRequiredAnnotationsRequest, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + } }; /** * DocumentApi - factory interface * @export */ -export const DocumentApiFactory = function ( - configuration?: Configuration, - basePath?: string, - axios?: AxiosInstance -) { - const localVarFp = DocumentApiFp(configuration); +export const DocumentApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = DocumentApiFp(configuration) return { /** - * - * @param {number} [pageIndex] - * @param {number} [pageSize] + * + * @param {number} [pageIndex] + * @param {number} [pageSize] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + documentsGet(pageIndex?: number, pageSize?: number, options?: any): AxiosPromise<DocumentListResponse> { + return localVarFp.documentsGet(pageIndex, pageSize, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {DocumentAddRequest} [documentAddRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + documentsPost(documentAddRequest?: DocumentAddRequest, options?: any): AxiosPromise<void> { + return localVarFp.documentsPost(documentAddRequest, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + documentsRequiredAnnotationsGlobalGet(options?: any): AxiosPromise<GetRequiredAnnotationsGlobalResponse> { + return localVarFp.documentsRequiredAnnotationsGlobalGet(options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {SetRequiredAnnotationsGlobalRequest} [setRequiredAnnotationsGlobalRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - documentsGet( - pageIndex?: number, - pageSize?: number, - options?: any - ): AxiosPromise<DocumentListResponse> { - return localVarFp - .documentsGet(pageIndex, pageSize, options) - .then((request) => request(axios, basePath)); + documentsRequiredAnnotationsGlobalPost(setRequiredAnnotationsGlobalRequest?: SetRequiredAnnotationsGlobalRequest, options?: any): AxiosPromise<void> { + return localVarFp.documentsRequiredAnnotationsGlobalPost(setRequiredAnnotationsGlobalRequest, options).then((request) => request(axios, basePath)); }, /** - * - * @param {DocumentAddRequest} [documentAddRequest] + * + * @param {SetRequiredAnnotationsRequest} [setRequiredAnnotationsRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - documentsPost( - documentAddRequest?: DocumentAddRequest, - options?: any - ): AxiosPromise<void> { - return localVarFp - .documentsPost(documentAddRequest, options) - .then((request) => request(axios, basePath)); + documentsRequiredAnnotationsPost(setRequiredAnnotationsRequest?: SetRequiredAnnotationsRequest, options?: any): AxiosPromise<void> { + return localVarFp.documentsRequiredAnnotationsPost(setRequiredAnnotationsRequest, options).then((request) => request(axios, basePath)); }, }; }; @@ -1769,40 +1700,62 @@ export const DocumentApiFactory = function ( */ export class DocumentApi extends BaseAPI { /** - * - * @param {number} [pageIndex] - * @param {number} [pageSize] + * + * @param {number} [pageIndex] + * @param {number} [pageSize] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DocumentApi + */ + public documentsGet(pageIndex?: number, pageSize?: number, options?: AxiosRequestConfig) { + return DocumentApiFp(this.configuration).documentsGet(pageIndex, pageSize, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {DocumentAddRequest} [documentAddRequest] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DocumentApi + */ + public documentsPost(documentAddRequest?: DocumentAddRequest, options?: AxiosRequestConfig) { + return DocumentApiFp(this.configuration).documentsPost(documentAddRequest, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DocumentApi + */ + public documentsRequiredAnnotationsGlobalGet(options?: AxiosRequestConfig) { + return DocumentApiFp(this.configuration).documentsRequiredAnnotationsGlobalGet(options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {SetRequiredAnnotationsGlobalRequest} [setRequiredAnnotationsGlobalRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof DocumentApi */ - public documentsGet( - pageIndex?: number, - pageSize?: number, - options?: AxiosRequestConfig - ) { - return DocumentApiFp(this.configuration) - .documentsGet(pageIndex, pageSize, options) - .then((request) => request(this.axios, this.basePath)); + public documentsRequiredAnnotationsGlobalPost(setRequiredAnnotationsGlobalRequest?: SetRequiredAnnotationsGlobalRequest, options?: AxiosRequestConfig) { + return DocumentApiFp(this.configuration).documentsRequiredAnnotationsGlobalPost(setRequiredAnnotationsGlobalRequest, options).then((request) => request(this.axios, this.basePath)); } /** - * - * @param {DocumentAddRequest} [documentAddRequest] + * + * @param {SetRequiredAnnotationsRequest} [setRequiredAnnotationsRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof DocumentApi */ - public documentsPost( - documentAddRequest?: DocumentAddRequest, - options?: AxiosRequestConfig - ) { - return DocumentApiFp(this.configuration) - .documentsPost(documentAddRequest, options) - .then((request) => request(this.axios, this.basePath)); + public documentsRequiredAnnotationsPost(setRequiredAnnotationsRequest?: SetRequiredAnnotationsRequest, options?: AxiosRequestConfig) { + return DocumentApiFp(this.configuration).documentsRequiredAnnotationsPost(setRequiredAnnotationsRequest, options).then((request) => request(this.axios, this.basePath)); } } + /** * TagApi - axios parameter creator * @export @@ -1810,7 +1763,7 @@ export class DocumentApi extends BaseAPI { export const TagApiAxiosParamCreator = function (configuration?: Configuration) { return { /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -1823,75 +1776,57 @@ export const TagApiAxiosParamCreator = function (configuration?: Configuration) baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options }; + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; return { url: toPathString(localVarUrlObj), options: localVarRequestOptions, }; }, - }; + } }; /** * TagApi - functional programming interface * @export */ -export const TagApiFp = function (configuration?: Configuration) { - const localVarAxiosParamCreator = TagApiAxiosParamCreator(configuration); +export const TagApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = TagApiAxiosParamCreator(configuration) return { /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async tagsGet( - options?: AxiosRequestConfig - ): Promise< - (axios?: AxiosInstance, basePath?: string) => AxiosPromise<TagTreeResponse> - > { + async tagsGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TagTreeResponse>> { const localVarAxiosArgs = await localVarAxiosParamCreator.tagsGet(options); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, - }; + } }; /** * TagApi - factory interface * @export */ -export const TagApiFactory = function ( - configuration?: Configuration, - basePath?: string, - axios?: AxiosInstance -) { - const localVarFp = TagApiFp(configuration); +export const TagApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = TagApiFp(configuration) return { /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} */ tagsGet(options?: any): AxiosPromise<TagTreeResponse> { - return localVarFp - .tagsGet(options) - .then((request) => request(axios, basePath)); + return localVarFp.tagsGet(options).then((request) => request(axios, basePath)); }, }; }; @@ -1904,18 +1839,17 @@ export const TagApiFactory = function ( */ export class TagApi extends BaseAPI { /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof TagApi */ public tagsGet(options?: AxiosRequestConfig) { - return TagApiFp(this.configuration) - .tagsGet(options) - .then((request) => request(this.axios, this.basePath)); + return TagApiFp(this.configuration).tagsGet(options).then((request) => request(this.axios, this.basePath)); } } + /** * UserApi - axios parameter creator * @export @@ -1923,13 +1857,11 @@ export class TagApi extends BaseAPI { export const UserApiAxiosParamCreator = function (configuration?: Configuration) { return { /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} */ - userAnnotationsGet: async ( - options: AxiosRequestConfig = {} - ): Promise<RequestArgs> => { + userAnnotationsGet: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => { const localVarPath = `/user/annotations`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -1938,18 +1870,15 @@ export const UserApiAxiosParamCreator = function (configuration?: Configuration) baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options }; + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; return { url: toPathString(localVarUrlObj), @@ -1957,21 +1886,16 @@ export const UserApiAxiosParamCreator = function (configuration?: Configuration) }; }, /** - * - * @param {string} userId + * + * @param {string} userId * @param {*} [options] Override http request option. * @throws {RequiredError} */ - userUserIdAnnotationsGet: async ( - userId: string, - options: AxiosRequestConfig = {} - ): Promise<RequestArgs> => { + userUserIdAnnotationsGet: async (userId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { // verify required parameter 'userId' is not null or undefined - assertParamExists('userUserIdAnnotationsGet', 'userId', userId); - const localVarPath = `/user/{userId}/annotations`.replace( - `{${'userId'}}`, - encodeURIComponent(String(userId)) - ); + assertParamExists('userUserIdAnnotationsGet', 'userId', userId) + const localVarPath = `/user/{userId}/annotations` + .replace(`{${"userId"}}`, encodeURIComponent(String(userId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -1979,18 +1903,15 @@ export const UserApiAxiosParamCreator = function (configuration?: Configuration) baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options }; + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; return { url: toPathString(localVarUrlObj), @@ -1998,21 +1919,16 @@ export const UserApiAxiosParamCreator = function (configuration?: Configuration) }; }, /** - * - * @param {string} userId + * + * @param {string} userId * @param {*} [options] Override http request option. * @throws {RequiredError} */ - userUserIdDelete: async ( - userId: string, - options: AxiosRequestConfig = {} - ): Promise<RequestArgs> => { + userUserIdDelete: async (userId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { // verify required parameter 'userId' is not null or undefined - assertParamExists('userUserIdDelete', 'userId', userId); - const localVarPath = `/user/{userId}`.replace( - `{${'userId'}}`, - encodeURIComponent(String(userId)) - ); + assertParamExists('userUserIdDelete', 'userId', userId) + const localVarPath = `/user/{userId}` + .replace(`{${"userId"}}`, encodeURIComponent(String(userId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -2020,22 +1936,15 @@ export const UserApiAxiosParamCreator = function (configuration?: Configuration) baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { - method: 'DELETE', - ...baseOptions, - ...options, - }; + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; return { url: toPathString(localVarUrlObj), @@ -2043,23 +1952,17 @@ export const UserApiAxiosParamCreator = function (configuration?: Configuration) }; }, /** - * - * @param {string} userId - * @param {ChangeUserInfoRequest} [changeUserInfoRequest] + * + * @param {string} userId + * @param {ChangeUserInfoRequest} [changeUserInfoRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - userUserIdPut: async ( - userId: string, - changeUserInfoRequest?: ChangeUserInfoRequest, - options: AxiosRequestConfig = {} - ): Promise<RequestArgs> => { + userUserIdPut: async (userId: string, changeUserInfoRequest?: ChangeUserInfoRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { // verify required parameter 'userId' is not null or undefined - assertParamExists('userUserIdPut', 'userId', userId); - const localVarPath = `/user/{userId}`.replace( - `{${'userId'}}`, - encodeURIComponent(String(userId)) - ); + assertParamExists('userUserIdPut', 'userId', userId) + const localVarPath = `/user/{userId}` + .replace(`{${"userId"}}`, encodeURIComponent(String(userId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -2067,25 +1970,18 @@ export const UserApiAxiosParamCreator = function (configuration?: Configuration) baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options }; + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + + localVarHeaderParameter['Content-Type'] = 'application/json'; setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - localVarRequestOptions.data = serializeDataIfNeeded( - changeUserInfoRequest, - localVarRequestOptions, - configuration - ); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(changeUserInfoRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -2093,7 +1989,7 @@ export const UserApiAxiosParamCreator = function (configuration?: Configuration) }; }, /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -2106,18 +2002,15 @@ export const UserApiAxiosParamCreator = function (configuration?: Configuration) baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options }; + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; return { url: toPathString(localVarUrlObj), @@ -2125,15 +2018,12 @@ export const UserApiAxiosParamCreator = function (configuration?: Configuration) }; }, /** - * - * @param {CreateUserRequest} [createUserRequest] + * + * @param {CreateUserRequest} [createUserRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - usersPost: async ( - createUserRequest?: CreateUserRequest, - options: AxiosRequestConfig = {} - ): Promise<RequestArgs> => { + usersPost: async (createUserRequest?: CreateUserRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => { const localVarPath = `/users`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -2142,258 +2032,155 @@ export const UserApiAxiosParamCreator = function (configuration?: Configuration) baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options }; + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + + localVarHeaderParameter['Content-Type'] = 'application/json'; setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = - baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - localVarRequestOptions.data = serializeDataIfNeeded( - createUserRequest, - localVarRequestOptions, - configuration - ); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(createUserRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), options: localVarRequestOptions, }; }, - }; + } }; /** * UserApi - functional programming interface * @export */ -export const UserApiFp = function (configuration?: Configuration) { - const localVarAxiosParamCreator = UserApiAxiosParamCreator(configuration); +export const UserApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = UserApiAxiosParamCreator(configuration) return { /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async userAnnotationsGet( - options?: AxiosRequestConfig - ): Promise< - ( - axios?: AxiosInstance, - basePath?: string - ) => AxiosPromise<AnnotationListResponse> - > { - const localVarAxiosArgs = await localVarAxiosParamCreator.userAnnotationsGet( - options - ); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + async userAnnotationsGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AnnotationListResponse>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.userAnnotationsGet(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** - * - * @param {string} userId + * + * @param {string} userId * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async userUserIdAnnotationsGet( - userId: string, - options?: AxiosRequestConfig - ): Promise< - ( - axios?: AxiosInstance, - basePath?: string - ) => AxiosPromise<AnnotationListResponse> - > { - const localVarAxiosArgs = - await localVarAxiosParamCreator.userUserIdAnnotationsGet(userId, options); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + async userUserIdAnnotationsGet(userId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AnnotationListResponse>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.userUserIdAnnotationsGet(userId, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** - * - * @param {string} userId + * + * @param {string} userId * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async userUserIdDelete( - userId: string, - options?: AxiosRequestConfig - ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.userUserIdDelete( - userId, - options - ); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + async userUserIdDelete(userId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.userUserIdDelete(userId, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** - * - * @param {string} userId - * @param {ChangeUserInfoRequest} [changeUserInfoRequest] + * + * @param {string} userId + * @param {ChangeUserInfoRequest} [changeUserInfoRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async userUserIdPut( - userId: string, - changeUserInfoRequest?: ChangeUserInfoRequest, - options?: AxiosRequestConfig - ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.userUserIdPut( - userId, - changeUserInfoRequest, - options - ); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + async userUserIdPut(userId: string, changeUserInfoRequest?: ChangeUserInfoRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.userUserIdPut(userId, changeUserInfoRequest, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async usersGet( - options?: AxiosRequestConfig - ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UserList>> { + async usersGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UserList>> { const localVarAxiosArgs = await localVarAxiosParamCreator.usersGet(options); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** - * - * @param {CreateUserRequest} [createUserRequest] + * + * @param {CreateUserRequest} [createUserRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async usersPost( - createUserRequest?: CreateUserRequest, - options?: AxiosRequestConfig - ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.usersPost( - createUserRequest, - options - ); - return createRequestFunction( - localVarAxiosArgs, - globalAxios, - BASE_PATH, - configuration - ); + async usersPost(createUserRequest?: CreateUserRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.usersPost(createUserRequest, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, - }; + } }; /** * UserApi - factory interface * @export */ -export const UserApiFactory = function ( - configuration?: Configuration, - basePath?: string, - axios?: AxiosInstance -) { - const localVarFp = UserApiFp(configuration); +export const UserApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = UserApiFp(configuration) return { /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} */ userAnnotationsGet(options?: any): AxiosPromise<AnnotationListResponse> { - return localVarFp - .userAnnotationsGet(options) - .then((request) => request(axios, basePath)); + return localVarFp.userAnnotationsGet(options).then((request) => request(axios, basePath)); }, /** - * - * @param {string} userId + * + * @param {string} userId * @param {*} [options] Override http request option. * @throws {RequiredError} */ - userUserIdAnnotationsGet( - userId: string, - options?: any - ): AxiosPromise<AnnotationListResponse> { - return localVarFp - .userUserIdAnnotationsGet(userId, options) - .then((request) => request(axios, basePath)); + userUserIdAnnotationsGet(userId: string, options?: any): AxiosPromise<AnnotationListResponse> { + return localVarFp.userUserIdAnnotationsGet(userId, options).then((request) => request(axios, basePath)); }, /** - * - * @param {string} userId + * + * @param {string} userId * @param {*} [options] Override http request option. * @throws {RequiredError} */ userUserIdDelete(userId: string, options?: any): AxiosPromise<void> { - return localVarFp - .userUserIdDelete(userId, options) - .then((request) => request(axios, basePath)); + return localVarFp.userUserIdDelete(userId, options).then((request) => request(axios, basePath)); }, /** - * - * @param {string} userId - * @param {ChangeUserInfoRequest} [changeUserInfoRequest] + * + * @param {string} userId + * @param {ChangeUserInfoRequest} [changeUserInfoRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - userUserIdPut( - userId: string, - changeUserInfoRequest?: ChangeUserInfoRequest, - options?: any - ): AxiosPromise<void> { - return localVarFp - .userUserIdPut(userId, changeUserInfoRequest, options) - .then((request) => request(axios, basePath)); + userUserIdPut(userId: string, changeUserInfoRequest?: ChangeUserInfoRequest, options?: any): AxiosPromise<void> { + return localVarFp.userUserIdPut(userId, changeUserInfoRequest, options).then((request) => request(axios, basePath)); }, /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} */ usersGet(options?: any): AxiosPromise<UserList> { - return localVarFp - .usersGet(options) - .then((request) => request(axios, basePath)); + return localVarFp.usersGet(options).then((request) => request(axios, basePath)); }, /** - * - * @param {CreateUserRequest} [createUserRequest] + * + * @param {CreateUserRequest} [createUserRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - usersPost( - createUserRequest?: CreateUserRequest, - options?: any - ): AxiosPromise<void> { - return localVarFp - .usersPost(createUserRequest, options) - .then((request) => request(axios, basePath)); + usersPost(createUserRequest?: CreateUserRequest, options?: any): AxiosPromise<void> { + return localVarFp.usersPost(createUserRequest, options).then((request) => request(axios, basePath)); }, }; }; @@ -2406,86 +2193,69 @@ export const UserApiFactory = function ( */ export class UserApi extends BaseAPI { /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof UserApi */ public userAnnotationsGet(options?: AxiosRequestConfig) { - return UserApiFp(this.configuration) - .userAnnotationsGet(options) - .then((request) => request(this.axios, this.basePath)); + return UserApiFp(this.configuration).userAnnotationsGet(options).then((request) => request(this.axios, this.basePath)); } /** - * - * @param {string} userId + * + * @param {string} userId * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof UserApi */ public userUserIdAnnotationsGet(userId: string, options?: AxiosRequestConfig) { - return UserApiFp(this.configuration) - .userUserIdAnnotationsGet(userId, options) - .then((request) => request(this.axios, this.basePath)); + return UserApiFp(this.configuration).userUserIdAnnotationsGet(userId, options).then((request) => request(this.axios, this.basePath)); } /** - * - * @param {string} userId + * + * @param {string} userId * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof UserApi */ public userUserIdDelete(userId: string, options?: AxiosRequestConfig) { - return UserApiFp(this.configuration) - .userUserIdDelete(userId, options) - .then((request) => request(this.axios, this.basePath)); + return UserApiFp(this.configuration).userUserIdDelete(userId, options).then((request) => request(this.axios, this.basePath)); } /** - * - * @param {string} userId - * @param {ChangeUserInfoRequest} [changeUserInfoRequest] + * + * @param {string} userId + * @param {ChangeUserInfoRequest} [changeUserInfoRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof UserApi */ - public userUserIdPut( - userId: string, - changeUserInfoRequest?: ChangeUserInfoRequest, - options?: AxiosRequestConfig - ) { - return UserApiFp(this.configuration) - .userUserIdPut(userId, changeUserInfoRequest, options) - .then((request) => request(this.axios, this.basePath)); + public userUserIdPut(userId: string, changeUserInfoRequest?: ChangeUserInfoRequest, options?: AxiosRequestConfig) { + return UserApiFp(this.configuration).userUserIdPut(userId, changeUserInfoRequest, options).then((request) => request(this.axios, this.basePath)); } /** - * + * * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof UserApi */ public usersGet(options?: AxiosRequestConfig) { - return UserApiFp(this.configuration) - .usersGet(options) - .then((request) => request(this.axios, this.basePath)); + return UserApiFp(this.configuration).usersGet(options).then((request) => request(this.axios, this.basePath)); } /** - * - * @param {CreateUserRequest} [createUserRequest] + * + * @param {CreateUserRequest} [createUserRequest] * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof UserApi */ - public usersPost( - createUserRequest?: CreateUserRequest, - options?: AxiosRequestConfig - ) { - return UserApiFp(this.configuration) - .usersPost(createUserRequest, options) - .then((request) => request(this.axios, this.basePath)); + public usersPost(createUserRequest?: CreateUserRequest, options?: AxiosRequestConfig) { + return UserApiFp(this.configuration).usersPost(createUserRequest, options).then((request) => request(this.axios, this.basePath)); } } + + -- GitLab From afd6a1e8a36653706545f6250a50a86bb5aae1dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=CC=81s=CC=8C=20Vlc=CC=8Cek?= <vlcek@net-inout.cz> Date: Thu, 5 May 2022 16:56:55 +0200 Subject: [PATCH 07/12] AnnotationStrings refactor --- webapp/pages/documents/annotator/index.tsx | 21 +++++------ webapp/utils/strings.ts | 42 ++++++++++++++++++++++ 2 files changed, 51 insertions(+), 12 deletions(-) create mode 100644 webapp/utils/strings.ts diff --git a/webapp/pages/documents/annotator/index.tsx b/webapp/pages/documents/annotator/index.tsx index 3fe867b..7b8cae0 100644 --- a/webapp/pages/documents/annotator/index.tsx +++ b/webapp/pages/documents/annotator/index.tsx @@ -9,7 +9,11 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { LoggedUserContext } from '../../../contexts/LoggedUserContext'; import { MainLayout } from '../../../layouts/MainLayout'; import { userController } from '../../../controllers'; -import { AnnotationListInfo } from '../../../api'; +import { AnnotationListInfo, EState } from '../../../api'; +import { + getAnnotationStateString, + getAnnotationStateColor, +} from '../../../utils/strings'; function UserDocumentPage() { const redirecting = useUnauthRedirect('/login'); @@ -43,17 +47,10 @@ function UserDocumentPage() { title: 'Stav anotace', key: 'state', dataIndex: 'state', - render: (state: string) => { - let color = 'green'; - let label = 'Hotovo'; - if (state === 'NEW') { - color = 'volcano'; - label = 'NovĂ˝'; - } - if (state === 'IN_PROGRESS') { - color = 'orange'; - label = 'Rozpracováno'; - } + render: (state: EState) => { + const color = getAnnotationStateColor(state); + const label = getAnnotationStateString(state); + return ( <Tag color={color} key={label}> {label.toUpperCase()} diff --git a/webapp/utils/strings.ts b/webapp/utils/strings.ts new file mode 100644 index 0000000..57133ed --- /dev/null +++ b/webapp/utils/strings.ts @@ -0,0 +1,42 @@ +import { EState, UserInfo } from '../api'; + +export function getName(user: UserInfo) { + //return `${user.name} ${user.surname}`; + return `${user.surname} ${user.name}`; +} + +export function getNameTruncated(user: UserInfo, maxLength: number = 15) { + const name = getName(user); + if (name.length > maxLength) { + return name.substring(0, maxLength - 3) + '...'; + } else { + return name; + } +} + +export function getUserInfoAlt(user: UserInfo) { + return `${getName(user)}\nUĹľivatelskĂ© jmĂ©no: ${user.username}`; +} + +export function getAnnotationStateString(state: EState) { + switch (state) { + case 'NEW': + return 'NovĂ˝'; + case 'IN_PROGRESS': + return 'RozpracovanĂ˝'; + case 'DONE': + return 'Hotovo'; + } +} + +export function getAnnotationStateColor(state: EState | undefined) { + switch (state) { + case 'NEW': + return 'indianred'; + case 'IN_PROGRESS': + return 'orange'; + case 'DONE': + return 'green'; + } + return 'black'; +} -- GitLab From ff61085f1524d4f30a215e192529c5bb43bb5251 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=CC=81s=CC=8C=20Vlc=CC=8Cek?= <vlcek@net-inout.cz> Date: Thu, 5 May 2022 16:57:36 +0200 Subject: [PATCH 08/12] Annotators in documents management --- webapp/pages/documents/admin/index.tsx | 29 ++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/webapp/pages/documents/admin/index.tsx b/webapp/pages/documents/admin/index.tsx index 2ea195f..c668503 100644 --- a/webapp/pages/documents/admin/index.tsx +++ b/webapp/pages/documents/admin/index.tsx @@ -9,11 +9,22 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { LoggedUserContext } from '../../../contexts/LoggedUserContext'; import { MainLayout } from '../../../layouts/MainLayout'; import AddDocumentModal from '../../../components/modals/AddDocumentModal'; -import { AnnotationListInfo, DocumentListInfo, UserInfo } from '../../../api'; +import { + AnnotationListInfo, + DocumentListInfo, + DocumentUserInfo, + EState, + UserInfo, +} from '../../../api'; import { documentController, userController } from '../../../controllers'; import AssignDocumentModal from '../../../components/modals/AssignDocumentModal'; import { ShowToast } from '../../../utils/alerts'; import { TableDocInfo } from '../../../components/types/TableDocInfo'; +import { + getAnnotationStateColor, + getNameTruncated, + getUserInfoAlt, +} from '../../../utils/strings'; function AdminDocumentPage() { const redirecting = useUnauthRedirect('/login'); @@ -79,19 +90,29 @@ function AdminDocumentPage() { title: 'AnotátoĹ™i', dataIndex: 'annotatingUsers', key: 'annotatingUsers', - render: (columnData: UserInfo[], record: DocumentListInfo, index: number) => { + render: ( + columnData: DocumentUserInfo[], + record: DocumentListInfo, + index: number + ) => { return ( <div> {columnData.map((e) => ( <span key={e.username + '.' + record.id} - title={e.username ?? ''} + title={getUserInfoAlt(e) + '\nStav: ' + e.state} + style={{ + color: getAnnotationStateColor(e.state), + padding: 3, + }} + className={'me-3'} > <FontAwesomeIcon icon={faUser} - title={e.username ?? ''} + title={getUserInfoAlt(e)} className={'me-2'} /> + {getNameTruncated(e)} </span> ))} </div> -- GitLab From 3df6328888fd50669fee366723641cd4dd6b7c3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=CC=81s=CC=8C=20Vlc=CC=8Cek?= <vlcek@net-inout.cz> Date: Thu, 5 May 2022 17:19:01 +0200 Subject: [PATCH 09/12] Custom badge component added --- webapp/components/common/ABadge.tsx | 48 +++++++++++++++++++++++++++++ webapp/constants.ts | 6 ++++ 2 files changed, 54 insertions(+) create mode 100644 webapp/components/common/ABadge.tsx create mode 100644 webapp/constants.ts diff --git a/webapp/components/common/ABadge.tsx b/webapp/components/common/ABadge.tsx new file mode 100644 index 0000000..920613f --- /dev/null +++ b/webapp/components/common/ABadge.tsx @@ -0,0 +1,48 @@ +import { ReactNode } from 'react'; +import { + BORDER_RADIUS, + COLOR_ERROR, + COLOR_GENERAL, + COLOR_SUCCESS, + COLOR_WARNING, +} from '../../constants'; + +export enum BadgeStyle { + GENERAL, + SUCCESS, + WARNING, + ERROR, +} + +export interface BadgeProps { + style: BadgeStyle; + children: ReactNode | ReactNode[]; +} + +export function ABadge(props: BadgeProps) { + function getBackgroundColor() { + switch (props.style) { + case BadgeStyle.GENERAL: + return COLOR_GENERAL; + case BadgeStyle.ERROR: + return COLOR_ERROR; + case BadgeStyle.SUCCESS: + return COLOR_SUCCESS; + case BadgeStyle.WARNING: + return COLOR_WARNING; + } + } + + return ( + <span + style={{ + backgroundColor: getBackgroundColor(), + color: 'white', + padding: '5px', + borderRadius: BORDER_RADIUS, + }} + > + {props.children} + </span> + ); +} diff --git a/webapp/constants.ts b/webapp/constants.ts new file mode 100644 index 0000000..bdabaf5 --- /dev/null +++ b/webapp/constants.ts @@ -0,0 +1,6 @@ +export const COLOR_GENERAL = 'gray'; +export const COLOR_SUCCESS = 'darkgreen'; +export const COLOR_WARNING = 'darkorange'; +export const COLOR_ERROR = 'indianred'; + +export const BORDER_RADIUS = 4; -- GitLab From 87a3d8d1fe1ef69c4a1ad725dcdf5ef167b02457 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=CC=81s=CC=8C=20Vlc=CC=8Cek?= <vlcek@net-inout.cz> Date: Thu, 5 May 2022 17:19:14 +0200 Subject: [PATCH 10/12] Showing counts of annotations in admin document management --- webapp/pages/documents/admin/index.tsx | 50 +++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/webapp/pages/documents/admin/index.tsx b/webapp/pages/documents/admin/index.tsx index c668503..20f8142 100644 --- a/webapp/pages/documents/admin/index.tsx +++ b/webapp/pages/documents/admin/index.tsx @@ -3,20 +3,19 @@ import React, { useContext, useEffect, useState } from 'react'; import { useUnauthRedirect } from '../../../hooks'; import { useRouter } from 'next/router'; -import { Button, Table, Tag, Typography } from 'antd'; +import { Button, Table, Typography } from 'antd'; import { faFileLines, faUser } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { LoggedUserContext } from '../../../contexts/LoggedUserContext'; import { MainLayout } from '../../../layouts/MainLayout'; import AddDocumentModal from '../../../components/modals/AddDocumentModal'; import { - AnnotationListInfo, DocumentListInfo, + DocumentListResponse, DocumentUserInfo, EState, - UserInfo, } from '../../../api'; -import { documentController, userController } from '../../../controllers'; +import { documentController } from '../../../controllers'; import AssignDocumentModal from '../../../components/modals/AssignDocumentModal'; import { ShowToast } from '../../../utils/alerts'; import { TableDocInfo } from '../../../components/types/TableDocInfo'; @@ -25,6 +24,7 @@ import { getNameTruncated, getUserInfoAlt, } from '../../../utils/strings'; +import { ABadge, BadgeStyle } from '../../../components/common/ABadge'; function AdminDocumentPage() { const redirecting = useUnauthRedirect('/login'); @@ -86,6 +86,48 @@ function AdminDocumentPage() { dataIndex: 'length', key: 'length', }, + { + title: 'DokonÄŤeno | pĹ™iĹ™azeno | vyĹľadováno', + key: 'annotationCounts', + render: ( + columnData: DocumentListResponse, + record: DocumentListInfo, + index: number + ) => { + const finished = + record.annotatingUsers?.filter((d) => d.state === EState.Done) + .length ?? 0; + + return ( + <div> + <ABadge + style={ + finished === record.annotatingUsers?.length + ? BadgeStyle.SUCCESS + : BadgeStyle.WARNING + } + > + {finished} + </ABadge> + {' | '} + <ABadge + style={ + record.annotatingUsers?.length === + record.requiredAnnotations + ? BadgeStyle.SUCCESS + : BadgeStyle.WARNING + } + > + {record.annotatingUsers?.length} + </ABadge> + {' | '} + <ABadge style={BadgeStyle.GENERAL}> + {record.requiredAnnotations} + </ABadge> + </div> + ); + }, + }, { title: 'AnotátoĹ™i', dataIndex: 'annotatingUsers', -- GitLab From ef2143b8a1287ac35d0678cf6a36b239bb0c5258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=CC=81s=CC=8C=20Vlc=CC=8Cek?= <vlcek@net-inout.cz> Date: Sat, 7 May 2022 14:11:18 +0200 Subject: [PATCH 11/12] Minor table colors changes --- webapp/pages/documents/admin/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapp/pages/documents/admin/index.tsx b/webapp/pages/documents/admin/index.tsx index 20f8142..517cb13 100644 --- a/webapp/pages/documents/admin/index.tsx +++ b/webapp/pages/documents/admin/index.tsx @@ -112,8 +112,8 @@ function AdminDocumentPage() { {' | '} <ABadge style={ - record.annotatingUsers?.length === - record.requiredAnnotations + (record.annotatingUsers?.length ?? 0) >= + (record.requiredAnnotations ?? 0) ? BadgeStyle.SUCCESS : BadgeStyle.WARNING } -- GitLab From e7eca311c12afcfd9decb840ca44bc8092239fa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=CC=81s=CC=8C=20Vlc=CC=8Cek?= <vlcek@net-inout.cz> Date: Sat, 7 May 2022 14:12:03 +0200 Subject: [PATCH 12/12] Required annotations count changing - modal - done --- .../SetRequiredAnnotationsCountModal.tsx | 85 +++++++++++++++++++ webapp/pages/documents/admin/index.tsx | 26 +++++- 2 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 webapp/components/modals/SetRequiredAnnotationsCountModal.tsx diff --git a/webapp/components/modals/SetRequiredAnnotationsCountModal.tsx b/webapp/components/modals/SetRequiredAnnotationsCountModal.tsx new file mode 100644 index 0000000..bec7e6b --- /dev/null +++ b/webapp/components/modals/SetRequiredAnnotationsCountModal.tsx @@ -0,0 +1,85 @@ +import { Button, Form, Input, Modal } from 'antd'; +import 'antd/dist/antd.css'; +import React from 'react'; +import { SetRequiredAnnotationsRequest } from '../../api'; +import { documentController } from '../../controllers'; +import { ShowToast } from '../../utils/alerts'; + +interface ModalProps { + onCancel: () => void; + documentsIds: string[]; +} + +function SetRequiredAnnotationsCountModal({ onCancel, documentsIds }: ModalProps) { + const handleOk = () => { + onCancel(); + }; + + const handleCancel = () => { + onCancel(); + }; + + const onFinish = async (values: any) => { + if (documentsIds && documentsIds.length !== 0) { + const req: SetRequiredAnnotationsRequest = { + requiredAnnotations: values.annotationsCount, + documentIds: documentsIds, + }; + + await documentController.documentsRequiredAnnotationsPost(req); + + ShowToast( + 'PoĹľadovanĂ˝ poÄŤet anotacĂ ĂşspěšnÄ› nastaven', + 'success', + 3000, + 'top-end' + ); + } + + handleOk(); + }; + + const onFinishFailed = (errorInfo: any) => { + ShowToast('ZadanĂ© Ăşdaje nejsou validnĂ', 'error', 3000, 'top-end'); + }; + + return ( + <Modal + title={'Nastavit poĹľadovanĂ˝ poÄŤet anotacĂ'} + onOk={handleOk} + visible={true} + onCancel={handleCancel} + footer={null} + width={400} + centered + > + <Form + onFinish={onFinish} + onFinishFailed={onFinishFailed} + autoComplete="off" + labelCol={{ span: 4 }} + layout="horizontal" + > + PoĹľadovanĂ˝ poÄŤet anotacĂ: + <Form.Item + name="annotationsCount" + rules={[ + { + required: true, + message: 'Zadejte poÄŤet anotacĂ', + }, + ]} + > + <Input placeholder="PoÄŤet anotacĂ" /> + </Form.Item> + <Form.Item> + <Button type="primary" htmlType="submit" className="w-100"> + ZmÄ›nit + </Button> + </Form.Item> + </Form> + </Modal> + ); +} + +export default SetRequiredAnnotationsCountModal; diff --git a/webapp/pages/documents/admin/index.tsx b/webapp/pages/documents/admin/index.tsx index 517cb13..936a8b5 100644 --- a/webapp/pages/documents/admin/index.tsx +++ b/webapp/pages/documents/admin/index.tsx @@ -25,12 +25,15 @@ import { getUserInfoAlt, } from '../../../utils/strings'; import { ABadge, BadgeStyle } from '../../../components/common/ABadge'; +import SetRequiredAnnotationsCountModal from '../../../components/modals/SetRequiredAnnotationsCountModal'; function AdminDocumentPage() { const redirecting = useUnauthRedirect('/login'); const { logout, role } = useContext(LoggedUserContext); const [visibleAdd, setVisibleAdd] = React.useState(false); const [visibleAssign, setVisibleAssign] = React.useState(false); + const [visibleSetCount, setVisibleSetCount] = React.useState(false); + const router = useRouter(); const [documents, setDocuments] = useState<TableDocInfo[]>([]); @@ -64,7 +67,18 @@ function AdminDocumentPage() { setVisibleAssign(true); } }; - + const showRequiredAnnotationsCountModal = () => { + if (selectedDocs.length == 0) { + ShowToast( + 'Vyberte dokument, pro kterĂ© chcete nastavit poĹľadovanĂ˝ poÄŤet anotacĂ', + 'warning', + 3000, + 'top-end' + ); + } else { + setVisibleSetCount(true); + } + }; const showAddModal = () => { setVisibleAdd(true); }; @@ -73,6 +87,7 @@ function AdminDocumentPage() { fetchData(); setVisibleAdd(false); setVisibleAssign(false); + setVisibleSetCount(false); }; const columns = [ @@ -179,10 +194,19 @@ function AdminDocumentPage() { Nahrát dokument </Button> <Button onClick={showAssignModal}>PĹ™iĹ™adit dokumenty</Button> + <Button onClick={showRequiredAnnotationsCountModal}> + Nastavit poĹľadovanĂ˝ poÄŤet anotacĂ + </Button> {visibleAdd && <AddDocumentModal onCancel={hideModal} />} {visibleAssign && ( <AssignDocumentModal documentsIds={selectedDocs} onCancel={hideModal} /> )} + {visibleSetCount && ( + <SetRequiredAnnotationsCountModal + documentsIds={selectedDocs} + onCancel={hideModal} + /> + )} <Table rowSelection={{ -- GitLab