Skip to content

Commit d7e0cfe

Browse files
committed
WIP
1 parent 027eeab commit d7e0cfe

File tree

3 files changed

+46
-20
lines changed

3 files changed

+46
-20
lines changed

DbViewer.TestApi/Controllers/DbViewerApiController.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ public DbViewerApiController(SchemaRegistryProvider schemaRegistryProvider)
3232
[Route("{objectIdentifier}/count")]
3333
public Task<CountResult> CountObjects(string objectIdentifier, [FromBody] ObjectSearchRequest query) => impl.CountObjects(objectIdentifier, query, IsSuperUser());
3434

35-
[HttpGet]
36-
[Route("{objectIdentifier}/download/{queryString}")]
37-
public async Task<IActionResult> DownloadObjects(string objectIdentifier, string queryString)
35+
[HttpPost]
36+
[Route("{objectIdentifier}/download")]
37+
public async Task<IActionResult> DownloadObjects(string objectIdentifier, [FromForm] string data)
3838
{
39-
var fileInfo = await impl.DownloadObjects(objectIdentifier, queryString, IsSuperUser()).ConfigureAwait(false);
39+
var fileInfo = await impl.DownloadObjects(objectIdentifier, data, IsSuperUser()).ConfigureAwait(false);
4040
return File(fileInfo.Content, fileInfo.ContentType, fileInfo.Name);
4141
}
4242

DbViewer.TestApi/TypeScriptConfiguration/InternalApiTypeBuildingContext.cs

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,7 @@ private static TypeScriptClassMemberDefinition BuildApiImplMember(IMethodInfo me
8181
Result = GetMethodResult(methodInfo, buildAndImportType),
8282
Body = {isUrlMethod ? GenerateGetUrlCall(methodInfo) : CreateCall(methodInfo)}
8383
};
84-
functionDefinition.Arguments.AddRange(
85-
methodInfo.GetParameters().Select(x => new TypeScriptArgumentDeclaration
86-
{
87-
Name = x.Name,
88-
Type = buildAndImportType(x.ParameterType)
89-
})
90-
);
84+
functionDefinition.Arguments.AddRange(GetArguments(methodInfo, buildAndImportType));
9185
return new TypeScriptClassMemberDefinition
9286
{
9387
Name = GetMethodName(methodInfo),
@@ -224,14 +218,21 @@ private static TypeScriptExpression GenerateConstructGetParams(IParameterInfo[]
224218
private static TypeScriptInterfaceFunctionMember BuildApiInterfaceMember(IMethodInfo methodInfo, Func<ITypeInfo, TypeScriptType> buildAndImportType)
225219
{
226220
var result = new TypeScriptInterfaceFunctionMember(GetMethodName(methodInfo), GetMethodResult(methodInfo, buildAndImportType));
227-
result.Arguments.AddRange(
228-
methodInfo.GetParameters().Select(x => new TypeScriptArgumentDeclaration
229-
{
230-
Name = x.Name,
231-
Type = buildAndImportType(x.ParameterType)
232-
})
233-
);
221+
result.Arguments.AddRange(GetArguments(methodInfo, buildAndImportType));
234222
return result;
235223
}
224+
225+
private static TypeScriptArgumentDeclaration[] GetArguments(IMethodInfo methodInfo, Func<ITypeInfo, TypeScriptType> buildAndImportType)
226+
{
227+
var isUrlMethod = IsUrlMethod(methodInfo);
228+
return methodInfo.GetParameters()
229+
.Where(x => !isUrlMethod || !x.ParameterType.GetAttributes(TypeInfo.From<FromFormAttribute>()).Any())
230+
.Select(x => new TypeScriptArgumentDeclaration
231+
{
232+
Name = x.Name,
233+
Type = buildAndImportType(x.ParameterType)
234+
})
235+
.ToArray();
236+
}
236237
}
237238
}

db-viewer-ui/src/Containers/ObjectTableContainer.tsx

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ColumnStack, Fit, RowStack } from "@skbkontur/react-stack-layout";
2-
import { Link, Loader, Paging } from "@skbkontur/react-ui";
2+
import { Button, Link, Loader, Paging } from "@skbkontur/react-ui";
33
import isEqual from "lodash/isEqual";
44
import qs from "qs";
55
import React from "react";
@@ -99,7 +99,7 @@ class ObjectTableContainerInternal extends React.Component<ObjectTableProps, Obj
9999
loading,
100100
objects,
101101
metaInformation,
102-
query: { offset, count, sorts },
102+
query: { offset, count, sorts, conditions, hiddenColumns },
103103
downloading,
104104
showDownloadModal,
105105
downloadCount,
@@ -139,6 +139,31 @@ class ObjectTableContainerInternal extends React.Component<ObjectTableProps, Obj
139139
}
140140
/>
141141
<CommonLayout.Content>
142+
{metaInformation && (
143+
<form
144+
method="post"
145+
action={this.props.dbViewerApi.getDownloadObjectsUrl(
146+
metaInformation.identifier,
147+
JSON.stringify({
148+
conditions: conditions,
149+
sorts: sorts,
150+
excludedFields: hiddenColumns,
151+
})
152+
)}>
153+
<input
154+
type="hidden"
155+
name="data"
156+
value={JSON.stringify({
157+
conditions: conditions,
158+
sorts: sorts,
159+
excludedFields: hiddenColumns,
160+
})}
161+
/>
162+
<Button use="link" type="submit">
163+
Download
164+
</Button>
165+
</form>
166+
)}
142167
<Loader type="big" active={loading}>
143168
<ColumnStack gap={4}>
144169
<Fit>

0 commit comments

Comments
 (0)