fix: Logs page pagination (#883)
This commit is contained in:
parent
7dcbca31fc
commit
ea4cdf9df2
|
|
@ -495,6 +495,13 @@ export declare type GetLogsRequest = Message<"olivetin.api.v1.GetLogsRequest"> &
|
|||
* @generated from field: string date_filter = 2;
|
||||
*/
|
||||
dateFilter: string;
|
||||
|
||||
/**
|
||||
* Number of logs per page (optional; server default used if 0 or unset)
|
||||
*
|
||||
* @generated from field: int64 page_size = 3;
|
||||
*/
|
||||
pageSize: bigint;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1846,3 +1853,4 @@ export declare const OliveTinApiService: GenService<{
|
|||
output: typeof EntitySchema;
|
||||
},
|
||||
}>;
|
||||
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -78,7 +78,7 @@
|
|||
</tbody>
|
||||
</table>
|
||||
|
||||
<Pagination :pageSize="pageSize" :total="totalCount" :currentPage="currentPage" @page-change="handlePageChange" class="padding"
|
||||
<Pagination :pageSize="pageSize" :total="totalCount" :currentPage="currentPage" :page="currentPage" @page-change="handlePageChange" class="padding"
|
||||
@page-size-change="handlePageSizeChange" itemTitle="execution logs" />
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@
|
|||
</tbody>
|
||||
</table>
|
||||
|
||||
<Pagination :pageSize="pageSize" :total="totalCount" :currentPage="currentPage" @page-change="handlePageChange" class = "padding"
|
||||
<Pagination :pageSize="pageSize" :total="totalCount" :currentPage="currentPage" :page="currentPage" @page-change="handlePageChange" class = "padding"
|
||||
@page-size-change="handlePageSizeChange" itemTitle="execution logs" />
|
||||
</div>
|
||||
|
||||
|
|
@ -150,6 +150,7 @@ async function fetchLogs() {
|
|||
|
||||
const args = {
|
||||
"startOffset": BigInt(startOffset),
|
||||
"pageSize": BigInt(pageSize.value),
|
||||
}
|
||||
|
||||
// Add date filter if selected
|
||||
|
|
@ -160,7 +161,6 @@ async function fetchLogs() {
|
|||
const response = await window.client.getLogs(args)
|
||||
|
||||
logs.value = response.logs
|
||||
pageSize.value = Number(response.pageSize) || 0
|
||||
totalCount.value = Number(response.totalCount) || 0
|
||||
} catch (err) {
|
||||
console.error('Failed to fetch logs:', err)
|
||||
|
|
|
|||
|
|
@ -121,6 +121,7 @@ message StartActionByGetAndWaitResponse {
|
|||
message GetLogsRequest{
|
||||
int64 start_offset = 1;
|
||||
string date_filter = 2; // Optional date filter in YYYY-MM-DD format
|
||||
int64 page_size = 3; // Number of logs per page (optional; server default used if 0 or unset)
|
||||
};
|
||||
|
||||
message LogEntry {
|
||||
|
|
|
|||
|
|
@ -1105,6 +1105,7 @@ type GetLogsRequest struct {
|
|||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
StartOffset int64 `protobuf:"varint,1,opt,name=start_offset,json=startOffset,proto3" json:"start_offset,omitempty"`
|
||||
DateFilter string `protobuf:"bytes,2,opt,name=date_filter,json=dateFilter,proto3" json:"date_filter,omitempty"` // Optional date filter in YYYY-MM-DD format
|
||||
PageSize int64 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Number of logs per page (optional; server default used if 0 or unset)
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
|
|
@ -1153,6 +1154,13 @@ func (x *GetLogsRequest) GetDateFilter() string {
|
|||
return ""
|
||||
}
|
||||
|
||||
func (x *GetLogsRequest) GetPageSize() int64 {
|
||||
if x != nil {
|
||||
return x.PageSize
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type LogEntry struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
DatetimeStarted string `protobuf:"bytes,1,opt,name=datetime_started,json=datetimeStarted,proto3" json:"datetime_started,omitempty"`
|
||||
|
|
@ -3972,11 +3980,12 @@ const file_olivetin_api_v1_olivetin_proto_rawDesc = "" +
|
|||
"\x1eStartActionByGetAndWaitRequest\x12\x1b\n" +
|
||||
"\taction_id\x18\x01 \x01(\tR\bactionId\"Y\n" +
|
||||
"\x1fStartActionByGetAndWaitResponse\x126\n" +
|
||||
"\tlog_entry\x18\x01 \x01(\v2\x19.olivetin.api.v1.LogEntryR\blogEntry\"T\n" +
|
||||
"\tlog_entry\x18\x01 \x01(\v2\x19.olivetin.api.v1.LogEntryR\blogEntry\"q\n" +
|
||||
"\x0eGetLogsRequest\x12!\n" +
|
||||
"\fstart_offset\x18\x01 \x01(\x03R\vstartOffset\x12\x1f\n" +
|
||||
"\vdate_filter\x18\x02 \x01(\tR\n" +
|
||||
"dateFilter\"\x89\x05\n" +
|
||||
"dateFilter\x12\x1b\n" +
|
||||
"\tpage_size\x18\x03 \x01(\x03R\bpageSize\"\x89\x05\n" +
|
||||
"\bLogEntry\x12)\n" +
|
||||
"\x10datetime_started\x18\x01 \x01(\tR\x0fdatetimeStarted\x12!\n" +
|
||||
"\faction_title\x18\x02 \x01(\tR\vactionTitle\x12\x16\n" +
|
||||
|
|
|
|||
|
|
@ -506,7 +506,16 @@ func (api *oliveTinAPI) GetLogs(ctx ctx.Context, req *connect.Request[apiv1.GetL
|
|||
if req.Msg.DateFilter != "" {
|
||||
dateFilter = req.Msg.DateFilter
|
||||
}
|
||||
logEntries, paging := api.executor.GetLogTrackingIdsACL(api.cfg, user, req.Msg.StartOffset, api.cfg.LogHistoryPageSize, dateFilter)
|
||||
pageSize := api.cfg.LogHistoryPageSize
|
||||
if req.Msg.GetPageSize() > 0 {
|
||||
pageSize = req.Msg.GetPageSize()
|
||||
if pageSize < 10 {
|
||||
pageSize = 10
|
||||
} else if pageSize > 100 {
|
||||
pageSize = 100
|
||||
}
|
||||
}
|
||||
logEntries, paging := api.executor.GetLogTrackingIdsACL(api.cfg, user, req.Msg.StartOffset, pageSize, dateFilter)
|
||||
for _, le := range logEntries {
|
||||
ret.Logs = append(ret.Logs, api.internalLogEntryToPb(le, user))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ func buildEntityFieldsetContents(contents []*config.DashboardComponent, ent *ent
|
|||
for _, subitem := range contents {
|
||||
c := cloneItem(subitem, ent, entityType, rr)
|
||||
|
||||
log.Infof("cloneItem: %+v", c)
|
||||
log.Tracef("cloneItem: %+v", c)
|
||||
|
||||
if c != nil {
|
||||
ret = append(ret, c)
|
||||
|
|
|
|||
Loading…
Reference in New Issue