ExtJS 4を使用して基本的なファイル マネージャーを作成しようとしていました。私が今直面した問題は、列をクリックしたときにグリッドパネルのカスタムソートを行う方法です。
ストア フィールドがあるとします。
[
{ name: "is_dir", type: "boolean" },
{ name: "name", type: "string" },
{ name: "size", type: "int" }
]
そして、配列からのデータ:
[
{ is_dir: true, name: "..", size: 0 },
{ is_dir: false, name: "file2.txt", size: 512 },
{ is_dir: true, name: "folder2", size: 0 },
{ is_dir: false, name: "file3.txt", size: 1024 },
{ is_dir: true, name: "folder1", size: 0 },
{ is_dir: true, name: "file1.txt", size: 1024 },
// ...
]
アイデアは、任意のファイル マネージャー (たとえば、 Total Commander、MC、FARなど) のように並べ替えを行うことです。そのため、次のようになります。
- 「..」という名前のアイテムは常に一番上に配置されます
- ディレクトリは「..」(存在する場合)の後にソートされます
- ファイルはディレクトリ (存在する場合) の後に並べ替えられます
たとえば、名前とサイズで並べ替えた出力は次のようになります。
^ Name | Size Name | ^ Size
----------------------- -------------------------
.. | 0 .. | 0
folder1 | 0 folder1 | 0
folder2 | 0 folder2 | 0
file1.txt | 1024 file2.txt | 512
file2.txt | 512 file1.txt | 1024
file3.txt | 1024 file3.txt | 1024
sorterFn
ストアプロパティのカスタムを記述しようとしましsorters
たが、役に立ちませんでした。そのための簡単な解決策が必要だと思います。