My goal is to design UX where users can reorder very long list of data (800+). User has to have an ability to filter the list. Users should have an easy way to quickly move many items to the top and bottom in the list. I am looking for an elegant solution. Currently I broke down the list into Top, Middle, Bottom. Having everything in a single table makes reordering tricky when the table is filtered; once you filter you only see subset of items and therefore cannot really move items into the right spot.
This reminds me a problem I work on last year: User wanted to pick a set of records from a paginated list, and apply bulk operation on them.
The pagination (a sort of filter if you wish) meant that once moving to another page, previous selection was no longer seen. There was also a search field which allowed filtering of records.
First choose then do
The design mapped the split in the user story (first choose records, then apply operation). Essentially, whenever the user selected a record, a collapsed container showed above the list with the title "X records selected"; and there was a dropdown button on that container labelled "bulk actions".
You can do something similar:
Filters don't have to completely hide
Although I doubt practical in this scenario, I have to mention the following since you don't have pagination and talking about around 800 records.
Filters in such case don't have to hide the records, they can simply leave a very small visual element representing the records and use hover (or drag over) to reveal the content of these minimised records.
This is something similar to how Google's Inbox collapses long conversations:
You could represent each item as a line, and you could revel the record as the user hover above or around it.