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;
|
* @generated from field: string date_filter = 2;
|
||||||
*/
|
*/
|
||||||
dateFilter: string;
|
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;
|
output: typeof EntitySchema;
|
||||||
},
|
},
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -78,7 +78,7 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</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" />
|
@page-size-change="handlePageSizeChange" itemTitle="execution logs" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</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" />
|
@page-size-change="handlePageSizeChange" itemTitle="execution logs" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -150,6 +150,7 @@ async function fetchLogs() {
|
||||||
|
|
||||||
const args = {
|
const args = {
|
||||||
"startOffset": BigInt(startOffset),
|
"startOffset": BigInt(startOffset),
|
||||||
|
"pageSize": BigInt(pageSize.value),
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add date filter if selected
|
// Add date filter if selected
|
||||||
|
|
@ -160,7 +161,6 @@ async function fetchLogs() {
|
||||||
const response = await window.client.getLogs(args)
|
const response = await window.client.getLogs(args)
|
||||||
|
|
||||||
logs.value = response.logs
|
logs.value = response.logs
|
||||||
pageSize.value = Number(response.pageSize) || 0
|
|
||||||
totalCount.value = Number(response.totalCount) || 0
|
totalCount.value = Number(response.totalCount) || 0
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('Failed to fetch logs:', err)
|
console.error('Failed to fetch logs:', err)
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,7 @@ message StartActionByGetAndWaitResponse {
|
||||||
message GetLogsRequest{
|
message GetLogsRequest{
|
||||||
int64 start_offset = 1;
|
int64 start_offset = 1;
|
||||||
string date_filter = 2; // Optional date filter in YYYY-MM-DD format
|
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 {
|
message LogEntry {
|
||||||
|
|
|
||||||
|
|
@ -1105,6 +1105,7 @@ type GetLogsRequest struct {
|
||||||
state protoimpl.MessageState `protogen:"open.v1"`
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
StartOffset int64 `protobuf:"varint,1,opt,name=start_offset,json=startOffset,proto3" json:"start_offset,omitempty"`
|
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
|
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
|
unknownFields protoimpl.UnknownFields
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
}
|
}
|
||||||
|
|
@ -1153,6 +1154,13 @@ func (x *GetLogsRequest) GetDateFilter() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *GetLogsRequest) GetPageSize() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.PageSize
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
type LogEntry struct {
|
type LogEntry struct {
|
||||||
state protoimpl.MessageState `protogen:"open.v1"`
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
DatetimeStarted string `protobuf:"bytes,1,opt,name=datetime_started,json=datetimeStarted,proto3" json:"datetime_started,omitempty"`
|
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" +
|
"\x1eStartActionByGetAndWaitRequest\x12\x1b\n" +
|
||||||
"\taction_id\x18\x01 \x01(\tR\bactionId\"Y\n" +
|
"\taction_id\x18\x01 \x01(\tR\bactionId\"Y\n" +
|
||||||
"\x1fStartActionByGetAndWaitResponse\x126\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" +
|
"\x0eGetLogsRequest\x12!\n" +
|
||||||
"\fstart_offset\x18\x01 \x01(\x03R\vstartOffset\x12\x1f\n" +
|
"\fstart_offset\x18\x01 \x01(\x03R\vstartOffset\x12\x1f\n" +
|
||||||
"\vdate_filter\x18\x02 \x01(\tR\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" +
|
"\bLogEntry\x12)\n" +
|
||||||
"\x10datetime_started\x18\x01 \x01(\tR\x0fdatetimeStarted\x12!\n" +
|
"\x10datetime_started\x18\x01 \x01(\tR\x0fdatetimeStarted\x12!\n" +
|
||||||
"\faction_title\x18\x02 \x01(\tR\vactionTitle\x12\x16\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 != "" {
|
if req.Msg.DateFilter != "" {
|
||||||
dateFilter = 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 {
|
for _, le := range logEntries {
|
||||||
ret.Logs = append(ret.Logs, api.internalLogEntryToPb(le, user))
|
ret.Logs = append(ret.Logs, api.internalLogEntryToPb(le, user))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ func buildEntityFieldsetContents(contents []*config.DashboardComponent, ent *ent
|
||||||
for _, subitem := range contents {
|
for _, subitem := range contents {
|
||||||
c := cloneItem(subitem, ent, entityType, rr)
|
c := cloneItem(subitem, ent, entityType, rr)
|
||||||
|
|
||||||
log.Infof("cloneItem: %+v", c)
|
log.Tracef("cloneItem: %+v", c)
|
||||||
|
|
||||||
if c != nil {
|
if c != nil {
|
||||||
ret = append(ret, c)
|
ret = append(ret, c)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue