それぞれが半分に答えた2つの代わりに1つのプランと課金画面
プラットフォームには2つの請求画面がありました。 /settings/account?tab=billing 回答 組織が支払うもの。メンバープロフィールの計画と請求は、何を答えた お振込み 誰が望んでいたのか、その分裂がなかったと言いました。 きれいに:組織のコンソール — 実際の価格の計画カード、 月間/年毎のトグ...
CRM市場が存在しない場合、市場オンボーディングパネルを表示
/leads は org 用の空の無効なマーケットタブバーでリードグリッドをレンダリングしました 決してCRM市場を構成しませんでした. 今、同じオンボーディングパネルが表示されます /商取引は欠落している商取引市場を示しています — 抽出された MarketOnboardingEmptyStateは、CRMリードによ...
最新のメッセージで開くと、残りのためにスクロールアップ
長い会話を開くと、最も古いロードされたメッセージが最初に表示され、その後、 会員が待機している間に、現在まで旅行中。 チャット面でも リストがすでにトップで塗装していた後だけ下にスクロールした — rAF → rAF → setTimeout(0)、ticketChat を通じてチャット setTimeout(...,...
期間グラフ、編集したタイムカードをドラフトとして
1日のタイムラインを****************************で置き換えます 有料期間全体で、どのような編集が感じているかを変更します。 丸薬はテキストを運びません。 自分の時間を運ぶのに使われ、ラベルは 60px の幅が広がりますが、説明したのは長かったので、10分間の休憩と 4時間シフトは同じ丸薬を...
誰かに返信する時にサポート会話を上げる
サポートウィンドウを閉じると会話を離れませんが、そのまま扱いました お問い合わせ ChatNotificationListener は、すべてのサポートで早期に返されます。 通知 — 正しく、チケットがプレーンチャットウィンドウを開く必要がないため、 ライブを再開することなくサポートを残しました。 誰がパネルを閉じ、最...
リンク可能なタブ、作業の追加メンバー、および完全な履歴タブ
/account/view/{id} の各タブは実際のルートです。 /members, /history と 残りは、誰かに送ることができるリンクです, ブックマーク, または上陸. 古い?tab=リンクリダイレクト マッチングに。 各タブは独自のデータを読み込むので、アカウントを開かずに どのタブのデータも表示する前...
パンチを書く前にクロックイン/アウトを確認します
Nav時計は、クリックをすぐにパンチしました。 そのバーの他のすべての制御 意図的または些細な不可解性である; パンチは、その後の賃金記録である 必須の書面による理由を持つHR管理者だけは正しいことができます — ボタン ログアウトから1つのピクセルを置きます。 現在はTimecardPunchConfirmDial...
1つのストリップ - サブタブの横にあるフィルターとリフレッシュ
コントロールはタブストリップ保持の下の2番目の全角行に座っています 3つの短い言葉とアイコン、パンのバンド全体を何に費やす タブラベルが空のままになっているスペースに収まります。 それらは上に移動します タブ行、右揃え、グリッドは高さを保持します。 パネルのフィルタは親からレンダリングされるので、行は変更できません ...
オプションストリップはクラスターの衝突の代わりに部屋を収着させます
左のクラスターは minWidth を運んだ: 0 その内容(誤って)は、 収縮するか、または包んで下さい、従って群衆された棒は自身の内容および コンテンツが右側にスピルアウト — 言語ボタンは直進 ログアウトリンク 2つのクラスターは、スペースのために競争しませんでした。 それを主張し、重複は、そのコンテンツが見え...
選択の場所にセグメンテーションされたステータスフィルタ
Pending/Complete/All は 1 行に合致する 3 つの短い仲間なので、 クリックの背後にある2つをドロップダウンし、ラベルと170pxを費やしました 何も言わない。 クローズドセレクションも「お探しの午前」には答えできません。 すべて? 開かずに。 セグメント別 フィルターは共有されます:排他的なT...
Skeletonは共有グリッドヘルパーを追跡します。 jsonBody's 204ガードのテスト
App/hr/overview/page.tsx のローディングの skeleton はまだ手書きします 概要ピラーと友人が抽出した1800pxのブレイクポイント primitives.tsx (WIDE BREAKPOINT / columnTrack / responseColumns). 同じヘルパーに切り替える...
承認の数値を currentPeriod にフォローし、null の読み込みをゼロとして停止します
SecurityService 7c55054 は、ウィンドウが記述する currentPeriod の内部で awaitingApproval を動かしました 実際には、開いている期間がない場合、完全に省略します。 このページは、そのwithheld を派生しました 2つの異なる式を持つ2つのコンポーネントで2回信号...
2列の図列なので、カードラベルはラップしません
数値ラベルは、オペレータラベルです。 - オーバーケース、11px、0.12emトラッキング - これにより、 158px で "Execution incomplete" を、150px で "Blockingexcept" に入れ、 135pxの「承認待ち」。 四分の一枚のカードの中の3枚のアップはそれぞれを与えま...
固定されたクロームラベルを2つのラインを渡る破壊を停止して下さい
フレックスアイテムの自動最小サイズは、そのミニコンテンツ幅です。 テキストを包むことは最も広い言葉です。従って混雑させた棒はこれらの制御を絞りました 56px-tallバー内のラベルを破るのに十分狭い。 4つの2つ クロームリンクは、独自のホワイトスペースを実行しました: 今ラップと他の2は、 そこで「ログアウト」が「...
ボタンの周りの2つではなく、時計のアイコンの上に1つの輝き
規則は、BOTHを放射性勾配と箱影を運ぶ。 グラデーションが満たされた ボックスシャドウが外側に別のリングをペイントしている間に、独自のボックス - 2 単一のルールから同心的な輝き、それはまさにそれがどのように見えるかです。 また、IconButtonに座っているので、外側のリングはボタンの丸みを追跡しました リク...
オプションをクラッシュするのではなく、混雑した nav をスライドさせる
ナブよりも多くのオプションをピニングは、形状からタイルを絞り込むことができます。 両方のストリップは未加工流出箱であり、タイルは非屈曲の子供です 自分自身の柔軟な収縮、トップバーはそれらを歪めました(そして、その scrollbar outright, 署名なしでオプションを飲み込む) 一方、 レールは12pxのスクロ...
共有ベースライン上にカードの数字を並べる
マストヘッドと4つのピラーカード上のすべての数字は、独自のスタックボックスでした。 上記演算子ラベル、以下に値します。 オペレータ ラベルは0.12emのアッパーケースです 追跡するので、カードの列の中に「過剰」が1行を占める「執行」 incomplete" 2 と "No の試行は左" 3 で、各値が始まる ラベルが...
禁止された承認の国家は、明確ではない追跡されていないようにレンダリングします
sessionState() は、blockingExceptions が 0 であったとき、すべてのメンバーの 'clear' をマークし、 timecardState は 'SUBMITTED' ではなく、呼び出し主が欠如しているすべてのメンバーに当てはまる FINALIZE PAY PERIODS は、サーバがタ...
AwaitingApproval は null で、null は 0 ではありません
SecurityService は、呼び出し元からの要約の承認の半分を保留しました FINALIZE PAY PERIODS なし — 解決するロールは MANAGE TIMECARDS に割り当てられません 承認権限なので、コンポジットはカウントとパーメンバーを渡す 承認は、プラットフォームが直接機能することを拒否し...
正直な順守図、断面の失敗した状態、右のgating
マストヘッドのパーセンテージはユニットを混合し、平らにすることができます。 `complete` 要約 org-wide ASSIGNMENT は `open` がメンバ-DOMAINS off メンバーをカウントしている間にカウントされます。 会員1名につき2名定員:50名、合計800名、合計20名 開いている作業を...
概要の柱はサブタブIDマップから深いリンクを下回ります。 アクティビティレールでデッドテキストを強制終了
概要Pillars.tsxハードコード ********************************************************************************************************************************************...
概要タブを他の4つのレポートとして作成する
全角レポーティングコンソール:マスヘッドの読み出し、4つのタブの柱、 必要性保持のledger、労働力の承諾のマトリックスおよび活動 レール。 読み取り専用 — すべてのアクションは、所有するタブに深いリンクです.
概要の注意のledger、承諾のマトリックスおよび活動の柵
useMemberNames ソース /api/security/members/names ではなく、ブリーフの推測 .../org-config シェイプ: org-config は、メンバーリストを返さない(読むことで確認) LegalPackageDialog.tsx と TrainingAssignDialo...
HrOverviewのid精度と出席状態のカバレッジを強化
精密テストは15桁のmemberIdを使用しており、これはNumber()を介して往復します。 無理なく、参加キーが文字列に留まることを証明しません。 id 過去に切り替える 数値.MAX SAFE INTEGER と 2 つの異なる id のケースを追加します。 数値() の coercion の下の同じ二重、従って...
概要データホックと共有されたビジュアルプリミティブ
useHrOverview fetches の出席 + docs allSettled の要約 デッドサービスは独自のセクションだけを劣化させます。フェッチを完全にスキップします。 セクション可視OverviewSections() は、メンバーが見えないと言います。 ザ・オブ・ザ・ プリミティブ (countUp, ...
時計を切るとき、緑の時、そして弾丸を落として下さい
仕事で時計を離れていると、誰かのお金がかかる状態です。 インジケータは、単に不在だった、と発表された1つの状態だった 不在は信号ではありません。 コントロールは、呼吸する赤の輝きをいつでも運ぶ 会員は受付けております。 硬い点滅ではなく1.8サイクルで息を呑むような輝き。 それはよく下にあります 3 フラッシュ毎秒の...
Enrollmentタブで、登録されていないときにメンバーのTimecardタブを非表示にします
誰にもタイムカードをオンにする方法はありませんでした。 あらゆる面が存在し、 それらのすべてが正しく何も示されていないので、入学はできない 作成 — なので******************** は "現在存在していない それを変更することができるプロダクトのどこにも追跡された」。 EnrollmentSubTab...
承認と例外タブは、現在存在する
どちらのバックエンドも先に出荷したが、パネルが書かれていないので、 /hr/attendance?sub=approvals と ?sub=exceptions がレンダリングされました。 作業エンドポイント上に構築された 承認サブタブはマネージャーのキューです。 タイムカードは2つの証明を運ぶ — 従業員の提出とマ...
完了によるログ作成
最終的なスキーマが24分の4つの部分的なインデックスを記録します。 ダブルペイとダブルコード保証、各々の後半スキーマ決定 余分な KI の操業を要し、それに価値があった、そして 2 つの場所ばね 自己提唱トラップは、運ではなく、建設によって回避されました.
400名分のオーガナイザーの期間終了画面
例外を再決し、全員の収益を補い、すべてを承認する 呼び出し元は、拒否された理由で、各報告PER MEMBERをすることができます。 "312 の 400 成功" は使えません: 今実行している人は見つけなければなりません 手で八方、それは正確には、バルク操作が想定された作業です 保存する。 refusal のテーブル...
コンプライアンスレポート、テストの中断、独自のレコード
/hr/attendance のレポートサブタブで、すべての 3 つの org-wide レポートを実行します。 1つのウィンドウ。 ラウンドレポートは、チップとしての評論と、としての発見を示しています "FAVOURS EMPLOYER" は賃金にさらされ、それを埋めるための警告 誰も読んでいない人は、その計算のポイ...
リアルタイムカード設定タブ
作業面でプレースホルダーを交換:ワークウィーク開始、営業日 境界、オープンシフトしきい値、丸み、レビュースイッチ、ブレイクルール seedingとorgのデフォルトスケジュール。 ラウンドフィールドは、ベア番号ではなく、それ自体を説明します。 ラウンドは NEUTRALが時間(29 CFR 785.48(b))を上回...
ビジュアルエディタ、支払いカレンダー、ペイロールエクスポート、制限された層
DayTimeline は、ドラッグ可能なハンドルで、24 時間トラックで作業した日を描画します。 すべてのパンチ。 間違ったパンチがほとんど決してないので、テーブルではなくグラフ 番号が明らかにする途中で間違っている: 17:00のクロックアウトはリストでうまく見え、 13:00で終わる前のシフトが終了したトラックで...
再発決済を停止する前に確認
両方のキャンセル操作 — 会員の座席とグループマネージャーの計画 — 今尋ねる まず、日付表に名前を付けることは、グループのために実行され、何人かの人々を保ちます 席まで。 共有確認ダイアログではなく、意図的に確認します。 DESTROY を入力する必要があります。 ボタンが有効になる前に、削除、削除、または消去、ま...
グループの計画をキャンセルすると、その席を支払った期間の終了に保ちます
クライアントからの即時フラグを完全にドロップします。 希望する理由がないため、今日は止まるのをお願いしてください。 ザ・オブ・ザ・ グループパネルは、それが押される前にキャンセルが何をするか、そして計画を言う 状態の曖昧さを離れるのではなく、後方に風が降っています.
請求書が必要な時に人々に伝え、支払いを止めましょう
支払いがこの人が責任を負うとき、ホームページ上のバナー 失敗し、請求ページに直接リンクします。 失敗した支払いまで もはや開いていないアプリとしてだけ現れた — 説明なしの制限 これは、未払いの請求書ではなく、壊れたソフトウェアとして読みます。 調達のみ 彼らが行動することができる請求書: 自分の座席、および管理グルー...
会員タイムカードタブとHRSタイムカード設定タブ
会員タブはSELF-SERVICEのみで、身元に置かれます。 法的な遵守:そのエンドポイントはメンバーIDをまったく受けませんので、構造的に 他人の時間を表示できない。 checkRight は使えません。 神様のモードの下のすべてを真に返し、ページ自身の canViewOtherMemberアカウントまたは関連のない...
/hr/attendanceの回転子およびNavTopの時計制御
HrTabPlaceholderボディを取り替えて下さい。 ルート, HR TABS エントリー, MANAGE TIMECARDS ゲートとタブi18nキーはすべて既に存在しています。ここで何も登録しません。 毎回読み込まれる不変なパンチログからロスター時間がサーバー側を誘導 走る合計として保たれているのではなく、...
フェーズのログをビルド 1-3
出荷されたものを記録します。, 共有lib のプッシュオーダー契約 ビット 一度, タイムゾーンの質問を解決し、既存のセンサスの生産 29人のランナーを抱いたカモイニタイザのバグ.
/api/security/timecards の BFF ルート
TimecardServiceは、イングレッシブなしでクラスターIPです。 すべてのサービスは健康であり、すべてのビルドは、ブラウザの404sを備えています 緑色 - このプラットフォームで2回既に起こった正確な失敗。 ここの認可無し、意図的に:この層は輸送であり、ハーフチェック それは制御であるという信念を招待しま...
ブラウザにorgタイムゾーンを渡す
クライアントの組織モデルはタイムゾーンフィールド、useFormatters と next-intl を持っていなかった timeZone と timezoneService のバックエンドコール 404'd を使わずに両方設定できます。 ブラウザのゾーンにレンダーされるタイムスタンプと、SSRのサーバーのタイムスタン...
HRタイムカードの設計と計画シリーズ
25個の試薬のクロスレポ調査に基づいた設計。 パートIIは12を閉じます blocker-level は、エンタープライズ機能の完全性に関するレビューを区別します。 パンチと一般的なledger:マネージャー承認層、同時割り当て そして支払率、優れた支払および規則的な率、人件費、計算 トレースと監査証拠パック, レポー...
自分の請求書を実際に到達できる場所に入れる
セルフペイとシートカバーパネルは/settings/account?tab=billingにありました。 このページは、CONFIGURE SYSTEM や資金を使わずに誰にでもリダイレクトします。 /settings と self-pay パネルは、未だの人だけのためにレンダリングします 組織の所有者 — なので、そ...
座席に支払うメンバーを表示し、第2者の提供を停止する
トランスレーションキーとコンポーネント無しで出荷されるカバレッジエンドポイントなので、 答えを問う - 座席に支払う人 - それでも尋ねる場所がなかった。 SeatCoveragePanelはそれを尋ね、答えはそれの横に自己支払のパネルを供給します: 組織またはグループが既に座席を覆っている人 自分のカードで別の購入チ...
人を置くことができるグループと支払い
グループを作成すると、名前を生成し、他に何も生成しません。誰を追加しても、方法はありません マネージャーが計画を選択するために、どこに支払うべきか。 グループを開く 誰がショー 座席を待ち受けている人、そしてその上でいる計画は、 座席購入 カナニカルメンバーピッカーを使って、誰に支払うかを尋ねます。 送信するために使...