# User Management(ryuichi-e, akira-s, kaori-t)


## タスク 作成

- フィルタリングに必要なコントロールを表示できる ([GW-1173](https://youtrack.weseek.co.jp/issue/GW-1173))
    - checkboxでAdminUserContainerを講読して変更して通知する。
    - All以外をcheckした時、Allをuncheck。
    - ステータス一つだけがcheckされていた場合、もう一度同じところをクリックするとuncheckされない。
    - allをcheckしたら他をuncheck
    - 1~4のタスクを終えた後、マネジメント後に通知するように変更
        - Checkしたステータス情報を**配列として**`"/search-user-status/"`に送る

- ステータス用コントロールの変更でフィルタリングができる ([GW-1078](https://youtrack.weseek.co.jp/issue/GW-1078))
    - routeのパスを適切な名前に変えて、mongooseで送るuser情報の追加
        - →`"/search-user-status/"`に変えました！
    - AdminUsersContainer.jsにて
        - client側で送られたステータスがAllとそれ以外だった場合のvalidationを行う

- インクリメンタルサーチができる([GW-1079](https://youtrack.weseek.co.jp/issue/GW-1079))
    - インクリメンタルサーチ用のInputの作成と文字一文字でも入力された場合、取り消しボタンを表示させる。
    - 取り消しボタンをクリックしたら、Inputの値を空にする。
    - Inputの値を`"/search-user-status/"`に送る
    - mongoDBを使って部分一致でUser情報のリストを返す機能を追加
  
- フィードでソートできる([GW-1080 ](https://youtrack.weseek.co.jp/issue/GW-1080))
    - テーブルのコラムの横にソートの矢印を入れる
        - 文字数が小さい順 (昇順)
        - 文字数が大きい順 (降順)
    - 最後にクリックしたソートicon(矢印)の値を[ 順, コラム名 ]としてserver側に送らなければない
        - つまり、送る値最後にクリックしたは一つだけ。
        - sortColumn
            - [順番, コラム名]
                - 全パターン
                    - [sortOrder: asc, sort: status]
                    - [sortOrder: asc, sort: username]
                    - [sortOrder: asc, sort: name]
                    - [sortOrder: asc, sort: email]
                    - [sortOrder: asc, sort: createdAt]
                    - [sortOrder: desc, sort: status]
                    - [sortOrder: desc, sort: username]
                    - [sortOrder: desc, sort: name]
                    - [sortOrder: desc, sort: email]
                    - [sortOrder: desc, sort: createdAt]
    - ソートの情報を`"/search-user-status/"`に送る
    - mongoDBを使ってソートの値を受け取り、ユーザー情報の順番かえる機能を追加
 
- リセットボタンですべての条件を破棄し、すべてのデータを表示する([GW-1087](https://youtrack.weseek.co.jp/issue/GW-1087))
    - 必要なし？
        - Allのcheck box をtrueにしたら、他ステータスのcheck boxがfalseになるため。
        - Inputに一文字でも入力された場合、取り消しボタンを押せばInputが空欄になるため。

## User Managemnetに関してのUML

@startuml
skinparam monochrome reverse

title UserManagement のシーケンス図

participant "色んなコントロール達　component(jsx)" as A
note left: サービスインスタンス
participant "Client AdminUserContainer (js)" as B
participant "route apiv3/users.js/search-user-status" as C


A -> B: 

B -> B: コントロールの状態を見てクエリObjectを変える

B -> C: /search

C -> C: mongoose package

C --> B: UserのList

B -> B:　See State (...)

@enduml

@startuml
skinparam monochrome reverse

title UserManagement のユースケース図

usecase UC1 as "
..前提（現在の実装を使う）..
Deleted ステータス以外のUserの１ページ目が表示されている
==
1.　ユーザーがコントロール値を変えたとき
2.　server/apiv3/users.js/search-user-status
--
2.1. Database上の該当Statusのデータ（UserのList）をget
2.2. テーブルに表示すべきデータをjsonとして返す
--
3．テーブルに当てはめる
"

@enduml

## 豆知識
### インクリメンタルサーチ (Incremental Search)

- **インクリメンタルサーチ**は検索したい単語をすべて入力した上で検索するのではなく、入力のたびごとに即座に候補を表示させる。
- **挙動**
    - インクリメンタルサーチの挙動を以下に例示する。
        - 検索文字列：検索に失敗した
        - 検索対象：検索の動作検証のため検査員が点検を行ったところ、検索に失敗した。
    - 一文字目：検
        - 検索結果：検索の動作検証のため検査員が点検を行ったところ、**検**索に失敗した
    - 二文字目：検索
        - 検索結果：検索の動作検証のため検査員が点検を行ったところ、**検索**に失敗した。
    - 三文字目：検索に
        - 検索結果：検索の動作検証のため検査員が点検を行ったところ、**検索に**失敗した。

### ソート (Sort)

- **ソート**は小さい順、大きい順、アルファベット順など、特定のルールに従って、データを並べること
- 何らかの規則に従ってデータを並べるのが「ソート（sort）」

---

## Page Navigation

- Canonical URL: https://dev.growi.org/開発日記/User%20Management(ryuichi-e,%20akira-s,%20kaori-t)
- Permalink: https://dev.growi.org/5e590edc49a26300487b67a5
- Parent: [開発日記](/5cfa266ab3aeb7003eefc6ca.md)
- Children: 0 total
- Total descendants: 0
- Siblings: 49 of 58 total (9 more not shown; see the page list API below for the full listing)
  - [ 半角英数字や記号が一定数使われている文面をコピペしようとすると貼ることができない問題調査まとめ](/642251c0e653a16ac93a20e8.md)
  - [#998 カラー修正](/5d0b203bc37d14003ee54e02.md)
  - [Bulk Export](/652642ebd10a2d606278a0ce.md)
  - [CSS Variables 化とテーマプラグイン化で変わったこと](/63c969d5a27caf68eb6028f4.md)
  - [Componentの責務](/5e208d98ab221600492ee901.md)
  - [ConfigManager のタイプチェック](/6790e6327ae1d64019d48f36.md)
  - [Enhanced Access Token と 部分的管理者権限の進捗](/67e26dca87d8507933ff0717.md)
  - [Frontmatter を使用したスライド表示](/64e5647fc5a8e43a6dcd61c7.md)
  - [GROWI で使用できる Markdwn の構文について](/67160fed359210c58fe3ad6b.md)
  - [GW-4885 画像を大量に添付した場合のメモリを計測する](/5fffebb2f1464d004850a4f9.md)
  - [Installer画面にアクセスするためのコメントアウト](/5e6b0b18b4782f00481624c4.md)
  - [Next化に伴う、staticSWRの扱いについて](/6361038968e91266d4bf91a6.md)
  - [Next化に伴うスケルトンの実装について](/62eb26bffea29673c64b96dc.md)
  - [PID 1 問題の修正](/61029bf3c9ca5100517c16d3.md)
  - [SearchPage の遷移について](/6479e9f6086e3c27ea5ab938.md)
  - [Trashページ PageList](/5f7eb2480135a7004988e956.md)
  - [USER_PUBLIC_FIELDSを使っている場所の洗い出し](/604ff8f15ea133004833501d.md)
  - [[External Group]Keycloak sync の動作確認方法](/652f48992846ed55c70cec6e.md)
  - [[GC-5921]SES と S3 バケットの設定値の分離](/5f3fa9c89182290049297ff6.md)
  - [add-tag-label](/5f999e309d9ead0049f0ab7b.md)
  - [api rate lmitの調整](/62c529c4246cf8007dc3bf61.md)
  - [bootstrap4化](/5e14092061c1a10048c26e7f.md)
  - [grantがnullのときに青枠が表示される #944](/5cdced197600b9003f8f1b08.md)
  - [growi本体のi18n対応](/62a71cddb1519362cc2761cc.md)
  - [hackmdの機構をpackages配下に移動](/63463b7ce126be013af78b59.md)
  - [locize 対応について](/65014d0ea3498dcb94e90800.md)
  - [peerDependencies](/623c134e396c70e3174d7f95.md)
  - [phpMyAdmin を GAE(flexible) で立てる](/60f55fbfb9b25c00515b5939.md)
  - [remark化メモ](/5f883d716897f900485b6a5a.md)
  - [tag昨日のバグ確認](/5cd3e7ac091bdc00486b2f53.md)
  - [v7 Sidebar Create Page](/652deb0f8978c8bdb9d87f26.md)
  - [ある特定のモーダル上でラジオボタンが動かない](/5fc7462b79cb6e00493cc7f8.md)
  - [コメントの再編集](/5d22f013e5fe0d0048537ac0.md)
  - [タグ一覧の動作確認](/5cd4f831a9c533004829928d.md)
  - [チェックボックス](/62a71cddb1519362cc2761ca.md)
  - [テスト用keycloak&saml構築](/5e4cfa39a2bdcf0048d69eb9.md)
  - [テーブルエディターの視認性が低下する](/5e1d5b74aa8d320048fe3d05.md)
  - [デザインルール](/5f2d05acf18a1e004888ea71.md)
  - [ファイルアップロードの apiv3 化と SWR について](/65095a9ec610d9b92cfd85a3.md)
  - [ページネーションの上限値の仕様変更](/5f7429e8cf5add004959ed78.md)
  - [ページリスト洗い出し](/5f64878ad2483d00480ed118.md)
  - [ページ削除機能の動作確認](/5ecaf7ffe917da0048ebd166.md)
  - [ページ機能の動作確認](/5ecb6057e917da0048ebd1a0.md)
  - [マイグレーションで重複登録によるエラーの解消法](/5e9900f40da6800048dbd4ea.md)
  - [モーダルないのautoFocus](/5fdb136b984b4b00482c5748.md)
  - [モーダルないのautoFocus(react-bootstrap-typeahead)](/5fdb135c984b4b00482c5744.md)
  - [ユーザー画像キャッシュの改善に伴うプラグインの修正の動作確認](/5f169621ec75070048deecce.md)
  - [リンク編集モーダル動作確認](/5f06c3c7cc16010049b88978.md)
  - [ログイン画面のReact化の動作確認](/5eaa9168bee8030048256e44.md)
- Last updated: 2020-03-09T13:01:46.115Z by ryuichi-e
- Full page listing (all children regardless of count): https://dev.growi.org/_api/v3/page-listing/children?id=5e590edc49a26300487b67a5
