Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

菜单项不排序, 实际上是按直播间添加时间排序 #550

Open
Ricky2576 opened this issue Nov 25, 2023 · 6 comments
Open

菜单项不排序, 实际上是按直播间添加时间排序 #550

Ricky2576 opened this issue Nov 25, 2023 · 6 comments

Comments

@Ricky2576
Copy link

Platforms

WPF (桌面版)

Version

v2.10.1

Description

菜单视图中的第一个菜单项不排序, 实际上是按直播间添加时间排序
希望修正
D2023 11 25_T21 36 18

Logs

No response

@Genteure
Copy link
Member

修正成什么?不排序就是怎么加载的怎么显示啊?

@Ricky2576
Copy link
Author

修正成什么?不排序就是怎么加载的怎么显示啊?

按[添加直播间时间]排序

@kira1928
Copy link
Contributor

是说把菜单中的 不排序 这个文字表述改为 按添加直播间时间排序 是吗?

@Ricky2576
Copy link
Author

是说把菜单中的 不排序 这个文字表述改为 按添加直播间时间排序 是吗?

对, 我不知道我的表述有什么歧义吗

@Genteure
Copy link
Member

Genteure commented Nov 26, 2023

我理解成文字不需要改,改排序方式了。
因为按我的理解,它确实就是不排序,现在按“添加直播间的顺序”排序只是一个实现细节,不是故意要这么做的。只是目前凑巧是这个顺序,因为多个元素在一个数组里面它总要有个顺序的。这个行为是不受保证的,如果之后改了配置文件格式没准顺序就变了。

就像数据库里面 SELECT * FROM my_table 是不排序而不是按插入顺序排序,js 里面 return [1,4,5,7,9] 是不排序而不是按定义顺序排序,Excel 里面行的顺序默认是不排序而不是按填写顺序排序一样。
只有真的 SELECT * FROM my_table ORDER BY created_time ASC 了才能说它是按添加时间排序的。

var data = recorder.Rooms;
IEnumerable<IRoom> orderedData = this.SortBy switch
{
SortedBy.RoomId => data.OrderBy(x => x.ShortId == 0 ? x.RoomConfig.RoomId : x.ShortId),
SortedBy.Status => from x in data orderby x.Recording descending, x.RoomConfig.AutoRecord descending, x.Streaming descending select x,
_ => data,
};
var result = new KeyIndexMappingReadOnlyList(orderedData.Concat(this.NullRoom).ToArray());
this.RoomList = result;

@Ricky2576
Copy link
Author

我理解成文字不需要改,改排序方式了。 因为按我的理解,它确实就是不排序,现在按“添加直播间的顺序”排序只是一个实现细节,不是故意要这么做的。只是目前凑巧是这个顺序,因为多个元素在一个数组里面它总要有个顺序的。这个行为是不受保证的,如果之后改了配置文件格式没准顺序就变了。

就像数据库里面 SELECT * FROM my_table 是不排序而不是按插入顺序排序,js 里面 return [1,4,5,7,9] 是不排序而不是按定义顺序排序,Excel 里面行的顺序默认是不排序而不是按填写顺序排序一样。 只有真的 SELECT * FROM my_table ORDER BY created_time ASC 了才能说它是按添加时间排序的。

var data = recorder.Rooms;
IEnumerable<IRoom> orderedData = this.SortBy switch
{
SortedBy.RoomId => data.OrderBy(x => x.ShortId == 0 ? x.RoomConfig.RoomId : x.ShortId),
SortedBy.Status => from x in data orderby x.Recording descending, x.RoomConfig.AutoRecord descending, x.Streaming descending select x,
_ => data,
};
var result = new KeyIndexMappingReadOnlyList(orderedData.Concat(this.NullRoom).ToArray());
this.RoomList = result;

我能理解从开发者视角看, 程序确实没有有意进行排序操作, 直接加载列表; 但是从用户视角看, 点击不排序选项后, 列表就会变成按直播间添加时间排序;
我觉得软件应该将代码层面的实现细节保持对用户透明, 实现效果应该和界面呈现描述一致
我最近频繁切换排序方式, 每次切换都需要想一下不排序是什么效果
当然这个细节对软件使用影响不大, 这个需求仅供参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

3 participants