Qodlyアプリケーションにおけるインタラクティブでダイナミックなメニューバーのデザイン

Deeplからの自動翻訳

今週のブログでは、ナビゲーションを取り上げます。ナビゲーションはどんなウェブアプリケーションでも重要な要素です。うまく構造化されたナビゲーションシステムは、ユーザーが必要なものを素早く見つけることを可能にし、全体的な体験を向上させます。

4D Qodly Proなら、ナビゲーションの管理はシンプルで柔軟です。Page Loaderコンポーネントを使えば、ユーザーのアクションに基づいて動的にページをロードすることができます。

この記事では、4D Qodly Proを使って効率的なナビゲーションバーを設定する方法を探ります。例として、GitHubからダウンロードできるPerformance Reviewアプリケーションを使用します。各ユーザーの役割に合わせたシームレスなエクスペリエンスを作成するために、そのデザイン、インタラクション、権限管理について説明します。

パフォーマンスレビューアプリケーション

ページローダーでページをロードする

4D Qodly Proでのページのロードは直感的です。ページローダーコンポーネントをインターフェイスにドラッグ&ドロップし、テキストベースのデータソースと関連付けるだけです。

blank

ページローダーは、データソースに保存された値に対応するページを自動的にロードします。この値を更新することで、ユーザーはアプリケーション内の異なるページ間をシームレスにナビゲートできます。

正しいナビゲーションタイプの選択

ページローダーを使ってページをロードする方法を理解したところで、スムーズで直感的なナビゲーションを促進するために、このデータソースを動的に変更する方法を決定する必要があります。

ナビゲーションには、主に3つのタイプがあります:

  • メニューバー:メニューバー:クイックアクセスに理想的な、常に表示される伝統的なナビゲーションバーです。
  • ハンバーガーメニュー:アイコンからアクセスする折りたたみ式のメニューで、モバイルアプリケーションに最適です。
  • サイドバーメニュー:複数のセクションを持つ複雑なアプリケーションに適しています。

ナビゲーションの種類は、アプリケーションとターゲットユーザーの特定のニーズに基づいて選択する必要があります。よく設計されたナビゲーションシステムは、ユーザーエクスペリエンスを向上させ、主要な機能へのアクセスを容易にします。

Performance Reviewアプリケーションでは、クラシックなメニューバーを選択しました。このアプローチにより、デスクトップとタブレット端末の両方でスムーズな操作性を確保しながら、さまざまなセクションに素早くアクセスすることができます。

ナビゲーションバーの作成

私たちのナビゲーション・バーは、シンプルで効率的、そしてユーザーフレンドリーに設計されています。主な特徴は以下の通りです:

  • 上部に表示されるスティッキーオプション付きの固定高ナビゲーションバー。
  • アプリケーションのアイコンと名前。
  • 人事部のドロップダウンメニュー
    • コラボレーター
    • レビュー
    • トレーニング
  • マネージャーボタン
  • コラボレーターボタン
  • ログインユーザーの名前
  • ログアウトボタン

blank

トップバーの作成

ナビゲーション バーは、常に画面の上部に表示されます。これを実現するために、sticky プロパティを持つスタイル ボックスを作成します:

  • position: stickyを指定すると、スクロール中もバーが表示されます。
  • top:0left: 0は、バーをページの左上に配置します。

blank

アプリケーション アイコンとタイトルの追加

Flexbox でスタイル ボックスを使用して要素を整列させ、さまざまな画面サイズでの応答性を維持します。

blank

このボックスの中に

メニューの作成

2 つ目のスタイル ボックス(Flexbox を使用)を追加して、ドロップダウン メニューと 2 つのナビゲーション ボタンを配置します。

人事」ドロップダウンメニューの作成

ドロップダウンメニューを作成するには、Popoverというカスタムコンポーネントを使用します。このコンポーネントは GitHub からダウンロードできます。

  • Popoverコンポーネントをページにドラッグ&ドロップします。
  • メニューセクションに、Human Resourcesというタイトルの静的テキストを追加します。
  • オーバーレイセクションに「Collaborator」「Reviews」「Training」と書かれた3つのボタンを挿入します。

blank

カスタムコンポーネントの詳細については、以前のブログ記事を参照してください:「カスタムコンポーネントによるQodlyアプリケーションの拡張” を参照してください。

マネージャーとコラボレーターボタンの追加

Manager “と “Collaborator “の2つのボタンを追加します。

ログ情報エリアの作成

3つ目のスタイルボックス(Flexboxを使用)を使用して、ログインしているユーザーの名前を表示し、ログアウトアクションを提供します。

  • ユーザー名データソースにバインドされたTextコンポーネントが、ナビゲーションバーの右側にログインユーザーの名前を表示します。

blank

  • ログアウトボタンは、ユーザが素早くサインアウトできるようにします。ボタンの onClick イベントで、標準の認証ログアウトアクションを割り当てます。

blank

認証の詳細については、以前のブログ記事をご覧ください:Qodly アプリケーションにユーザー認証を統合する

ナビゲーションインタラクションの実装

ナビゲーションは pageName という変数を通して管理されます。

  • それぞれのメニュー要素はpageNameの値を更新するアクションに関連付けられます。
  • ユーザーがボタンをクリックすると、対応するページが動的にロードされます。
  • 各ボタンに対して、onClickイベントでSet Datasourceアクションを適用します:
    • pageName = “CollaboratorPage” でコラボレーターページを表示します。
    • pageName = “ManagerPage “でManagerページを表示します。
    • などなど。

blank

このアプローチにより、アプリケーションをリロードすることなく、スムーズで高速なナビゲーションが可能になります。

パーミッションの管理

すべてのメニューボタンがすべてのユーザーに見えるわけではありません。それらの可視性はユーザのロールに依存します:

  • Collaborator:Collaborator:コラボレーターページにのみアクセスできます。
  • マネージャー:ManagerとCollaboratorページにアクセスできます。
  • HR: すべてのページにアクセスできます。

ログインユーザーの役割に応じて、どのオプションが表示されるかを動的に制御するために状態管理を使用します。

複数のロールの処理

マネージャーには2つの役割があります:

  • コラボレーターとして、自分のパフォーマンスレビューを完了します。
  • マネージャーとして、チームメンバーのパフォーマンスレビューをレビューし、検証します。

これを処理するために、2つのデータソースを定義します:

  • userInfo.maxRole:ユーザに割り当てられた最高のロールを表します。
  • userInfo.role:ユーザが現在使用しているアクティブなロールを表します。

データソースの入力:

ds.authentify() 関数を使用した認証時に、ユーザ情報がセッション・ストレージに格納されます:

var $obj :Object
$obj :=Session.storage

If ($obj.Employee=Null)
Use ($obj)
$obj .Employee:=New shared object
End use
End if

Use ($obj.Employee)
$obj .Employee.ID:=$employee.ID
$obj .Employee.name:=$employeeFirstname+" "+$employee.Lastname
$obj .Employee.role:="協力者"
$obj .Employee.maxRole:="協力者"
End Use

ヘルパー関数getUserInfo()は、Webページ内のユーザー詳細を取得するために提供される:

exposed Function getUserInfo: ( = ) . . . Object
IfSessionNull
return StorageEmployee
Else
return SessionstorageEmployee
End if

ログイン・ボタンのonClickイベントで、両方の関数が呼び出される:

  • ds.authentify()
  • ds.getUserInfo()

blank

ステートの作成と設定

  • をクリックして、ステートを追加する。

blank

  • Human Resources メニューを隠す(display: none)maxManagerステートを作成します。

blank

  • MaxCollaborator状態を作成し、Human Resources、Manager、Collaboratorオプションを非表示にします。Collaboratorは1つのページにしかアクセスできないため、ナビゲーションメニューは不要になります。

blank

条件付き表示ルールを定義します:

以下のようにします:

  • userInfo.maxRole = “hr “の場合、デフォルトの状態を表示する。
  • userInfo.maxRole = “manager “の場合、Manager状態を表示する。
  • userInfo.maxRole = “collaborator “の場合、Collaboratorの状態を表示する。

これらのルールは、Qodly Studioの条件付き状態設定エディタを使って簡単に実装できます。

maxCollaborator

blank

maxManager

blank

状態管理の詳細については、以前のブログ記事をご覧ください:ステートを使ってQodlyアプリケーションをダイナミックでインタラクティブにしましょう。

メニュー、ログインウィンドウ、選択されたメニューアイテムを管理するために他のステートも存在します。どのように設定するかはあなた次第です。質問があればフォーラムにお気軽にご参加ください。

異なるスクリーンサイズへの最適化

私たちのアプリケーションは、デスクトップとタブレットの両方で使用できるように設計されています。最適なユーザーエクスペリエンスを保証するために、ナビゲーションバーは完全にレスポンシブです。

  • 画面が小さすぎる場合、特定の要素を非表示にします(例:アプリケーション名とログインユーザー名)。
  • 小さい画面では、スペースを最大化するためにメニューをカラムレイアウトに再配置します。

要素の動的な非表示はCSSメディアクエリ(例:max-widthの使用)で管理され、FlexboxのWrapオプションにより、利用可能なスペースに応じてメニューが自動的に調整されます。

  • 大画面

blank

  • 中画面

blank

  • 小画面

blank

Qodly StudioのCSSカスタマイズについての詳細は、以前の投稿をご覧ください:CSSでQodlyインターフェイスをカスタマイズする

次のステップ

これで、4D Qodly Proを使ってインタラクティブでダイナミックなナビゲーションバーを作成するための必須要素が揃いました。

あなたの実装を4Dフォーラムで共有したり、質問したりして、コミュニティとの交流を続けてください。

Vanessa Talbot
- プロダクトオーナー - Vanessa Talbotは、2014年6月に4Dプログラムチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。入社以来、4Dにおける主要機能の定義に関わってきました。プリエンプティブ/マルチスレッドの新機能の大部分と、非常に複雑なテーマである組み込みアプリケーションの新アーキテクチャに取り組んできました。VanessaはTelecom Saint-Etienneで学位を取得後、Criminal Research Institute でオーディオビジュアル部門の開発者としてキャリアをスタートさせました。また、メディアや医療の分野でも、技術サポートやプロダクションの分野で働いてきました。