Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(feat) - O3-3096 service queues - configuration-driven queue table #1114

Merged
merged 6 commits into from May 2, 2024

Conversation

chibongho
Copy link
Contributor

@chibongho chibongho commented Apr 26, 2024

Requirements

  • This PR has a title that briefly describes the work done including the ticket number. If there is a ticket, make sure your PR title includes a conventional commit label. See existing PR titles for inspiration.
  • My work conforms to the OpenMRS 3.0 Styleguide and design documentation.
  • My work includes tests or is validated by existing tests.

Summary

This is a draft proposal of how to address the problem describe in O3-3096:

We need to configure the queue table in different contexts. For example, there can be a view of queue entries from all queues, a view of queue entries in a specific queue, or even a view of queue entries in a specific queue AND status. Depending on the context, we want to configure the queue table to display different columns. Additionally, the queue table usually provides a way to perform actions on each queue entry. The set of available actions could be specific to a queue, specific to a status, or specific to a queue+status combination.

The PR proposes a solution that allows us to specify TableDefinitions in the config. Each TableDefinition specifies a list of columns to use based on an appliedTo criteria, which can be applied to specific queue, a specific status, a specific queue+status combination, or (in the case when appliedTo not specified) to any table.

We predefine a set of QueueTableColumns that we should reasonably support (like name, priority, status) and how they should get rendered. Some of these columns can further be configured. (For example, this PR shows how we can configure the patientId column to display a particular patientIdentifierType.) We will also define another QueueTableColumn (not currently in this PR) that only renders an extension slot, allowing implementors to custom-define whatever column they want.

Also not currently in this PR yet, but we will also need more flexibility in how we define actions we can perform to each queue entry based on its current queue and status. We can predefined a set of QueueEntryActions that we should reasonably support (like editing / transitioning / ending / undoing queue entries). Some of these actions can further be customized (For example, we can define a quick action that tranistions a queue entry to a particular status). In addition, we can also define another QueueEntryAction that only renders an extension slot, allowing implementors to custom-define whatever action they want. We can use a very similar approach that we used for configuring columns and apply it to QueueEntryActions

Screenshots

Table listing queue entries from multiple queues:
image

Table listing queue entries from a specific queue. Note that the columns rendered are different.
image

Related Issue

Other

Copy link
Contributor

github-actions bot commented Apr 26, 2024

Size Change: -317 kB (-8%) ✅

Total Size: 3.53 MB

Filename Size Change
packages/esm-active-visits-app/dist/130.js 220 kB +51 kB (+30%) 🚨
packages/esm-active-visits-app/dist/448.js 0 B -47.1 kB (removed) 🏆
packages/esm-appointments-app/dist/123.js 0 B -257 kB (removed) 🏆
packages/esm-appointments-app/dist/130.js 220 kB +51 kB (+30%) 🚨
packages/esm-patient-list-management-app/dist/130.js 220 kB +51 kB (+30%) 🚨
packages/esm-patient-list-management-app/dist/295.js 0 B -99.3 kB (removed) 🏆
packages/esm-patient-registration-app/dist/130.js 220 kB +51 kB (+30%) 🚨
packages/esm-patient-search-app/dist/130.js 220 kB +51 kB (+30%) 🚨
packages/esm-service-queues-app/dist/130.js 220 kB +51 kB (+30%) 🚨
packages/esm-service-queues-app/dist/871.js 0 B -50.3 kB (removed) 🏆
packages/esm-service-queues-app/dist/966.js 0 B -159 kB (removed) 🏆
ℹ️ View Unchanged
Filename Size Change
packages/esm-active-visits-app/dist/255.js 2.21 kB 0 B
packages/esm-active-visits-app/dist/271.js 762 B 0 B
packages/esm-active-visits-app/dist/277.js 13.5 kB +98 B (+1%)
packages/esm-active-visits-app/dist/316.js 42.9 kB 0 B
packages/esm-active-visits-app/dist/319.js 683 B 0 B
packages/esm-active-visits-app/dist/382.js 1.15 kB 0 B
packages/esm-active-visits-app/dist/410.js 50.1 kB 0 B
packages/esm-active-visits-app/dist/460.js 784 B 0 B
packages/esm-active-visits-app/dist/574.js 588 B 0 B
packages/esm-active-visits-app/dist/588.js 6.66 kB 0 B
packages/esm-active-visits-app/dist/635.js 1.15 kB 0 B
packages/esm-active-visits-app/dist/644.js 762 B 0 B
packages/esm-active-visits-app/dist/729.js 3.1 kB 0 B
packages/esm-active-visits-app/dist/757.js 694 B 0 B
packages/esm-active-visits-app/dist/784.js 2.63 kB 0 B
packages/esm-active-visits-app/dist/788.js 586 B 0 B
packages/esm-active-visits-app/dist/807.js 918 B 0 B
packages/esm-active-visits-app/dist/833.js 732 B 0 B
packages/esm-active-visits-app/dist/879.js 2.94 kB 0 B
packages/esm-active-visits-app/dist/main.js 68 kB +3.02 kB (+5%) 🔍
packages/esm-active-visits-app/dist/openmrs-esm-active-visits-app.js 3.34 kB +1 B (0%)
packages/esm-appointments-app/dist/152.js 257 B 0 B
packages/esm-appointments-app/dist/255.js 2.22 kB 0 B
packages/esm-appointments-app/dist/271.js 1.97 kB 0 B
packages/esm-appointments-app/dist/286.js 0 B -9.34 kB (removed) 🏆
packages/esm-appointments-app/dist/303.js 258 B 0 B
packages/esm-appointments-app/dist/319.js 1.89 kB 0 B
packages/esm-appointments-app/dist/390.js 26.1 kB +86 B (0%)
packages/esm-appointments-app/dist/4.js 1.77 kB -2 B (0%)
packages/esm-appointments-app/dist/460.js 2.07 kB 0 B
packages/esm-appointments-app/dist/574.js 1.85 kB 0 B
packages/esm-appointments-app/dist/588.js 6.65 kB 0 B
packages/esm-appointments-app/dist/591.js 16.9 kB 0 B
packages/esm-appointments-app/dist/592.js 9.5 kB 0 B
packages/esm-appointments-app/dist/644.js 1.97 kB 0 B
packages/esm-appointments-app/dist/719.js 46.2 kB +108 B (0%)
packages/esm-appointments-app/dist/729.js 3.1 kB 0 B
packages/esm-appointments-app/dist/757.js 1.74 kB 0 B
packages/esm-appointments-app/dist/776.js 255 kB 0 B
packages/esm-appointments-app/dist/784.js 2.63 kB 0 B
packages/esm-appointments-app/dist/788.js 1.68 kB 0 B
packages/esm-appointments-app/dist/807.js 2.31 kB 0 B
packages/esm-appointments-app/dist/833.js 1.97 kB 0 B
packages/esm-appointments-app/dist/main.js 313 kB -1.91 kB (-1%)
packages/esm-appointments-app/dist/openmrs-esm-appointments-app.js 3.43 kB -1 B (0%)
packages/esm-patient-list-management-app/dist/255.js 2.21 kB 0 B
packages/esm-patient-list-management-app/dist/271.js 1.55 kB 0 B
packages/esm-patient-list-management-app/dist/319.js 1.52 kB 0 B
packages/esm-patient-list-management-app/dist/382.js 1.15 kB 0 B
packages/esm-patient-list-management-app/dist/460.js 1.7 kB 0 B
packages/esm-patient-list-management-app/dist/574.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/588.js 6.66 kB 0 B
packages/esm-patient-list-management-app/dist/591.js 16.9 kB 0 B
packages/esm-patient-list-management-app/dist/635.js 1.15 kB 0 B
packages/esm-patient-list-management-app/dist/644.js 1.55 kB 0 B
packages/esm-patient-list-management-app/dist/716.js 4.75 kB +89 B (+2%)
packages/esm-patient-list-management-app/dist/729.js 3.1 kB 0 B
packages/esm-patient-list-management-app/dist/740.js 97.6 kB 0 B
packages/esm-patient-list-management-app/dist/757.js 1.5 kB 0 B
packages/esm-patient-list-management-app/dist/784.js 2.64 kB 0 B
packages/esm-patient-list-management-app/dist/788.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/807.js 1.84 kB 0 B
packages/esm-patient-list-management-app/dist/833.js 1.58 kB 0 B
packages/esm-patient-list-management-app/dist/995.js 22 kB +97 B (0%)
packages/esm-patient-list-management-app/dist/main.js 124 kB -1.44 kB (-1%)
packages/esm-patient-list-management-app/dist/openmrs-esm-patient-list-management-app.js 3.3 kB +5 B (0%)
packages/esm-patient-registration-app/dist/152.js 262 B 0 B
packages/esm-patient-registration-app/dist/255.js 2.21 kB 0 B
packages/esm-patient-registration-app/dist/271.js 2.01 kB 0 B
packages/esm-patient-registration-app/dist/303.js 260 B 0 B
packages/esm-patient-registration-app/dist/319.js 1.99 kB 0 B
packages/esm-patient-registration-app/dist/460.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/481.js 6.75 kB 0 B
packages/esm-patient-registration-app/dist/537.js 2.43 kB +85 B (+4%)
packages/esm-patient-registration-app/dist/574.js 1.7 kB 0 B
packages/esm-patient-registration-app/dist/591.js 16.9 kB 0 B
packages/esm-patient-registration-app/dist/644.js 2.01 kB 0 B
packages/esm-patient-registration-app/dist/676.js 6.59 kB 0 B
packages/esm-patient-registration-app/dist/686.js 92 kB 0 B
packages/esm-patient-registration-app/dist/729.js 3.1 kB 0 B
packages/esm-patient-registration-app/dist/735.js 464 B 0 B
packages/esm-patient-registration-app/dist/757.js 2.07 kB 0 B
packages/esm-patient-registration-app/dist/783.js 36.4 kB +99 B (0%)
packages/esm-patient-registration-app/dist/784.js 2.64 kB 0 B
packages/esm-patient-registration-app/dist/788.js 1.7 kB 0 B
packages/esm-patient-registration-app/dist/807.js 2.43 kB 0 B
packages/esm-patient-registration-app/dist/833.js 1.97 kB 0 B
packages/esm-patient-registration-app/dist/879.js 2.94 kB 0 B
packages/esm-patient-registration-app/dist/main.js 130 kB +94 B (0%)
packages/esm-patient-registration-app/dist/openmrs-esm-patient-registration-app.js 3.34 kB 0 B
packages/esm-patient-search-app/dist/255.js 2.21 kB 0 B
packages/esm-patient-search-app/dist/271.js 899 B 0 B
packages/esm-patient-search-app/dist/319.js 857 B 0 B
packages/esm-patient-search-app/dist/382.js 1.15 kB 0 B
packages/esm-patient-search-app/dist/460.js 924 B 0 B
packages/esm-patient-search-app/dist/574.js 732 B 0 B
packages/esm-patient-search-app/dist/584.js 21.7 kB 0 B
packages/esm-patient-search-app/dist/588.js 6.66 kB 0 B
packages/esm-patient-search-app/dist/591.js 16.9 kB 0 B
packages/esm-patient-search-app/dist/635.js 1.15 kB 0 B
packages/esm-patient-search-app/dist/644.js 899 B 0 B
packages/esm-patient-search-app/dist/729.js 3.1 kB 0 B
packages/esm-patient-search-app/dist/757.js 864 B 0 B
packages/esm-patient-search-app/dist/778.js 23.3 kB +174 B (+1%)
packages/esm-patient-search-app/dist/784.js 2.63 kB 0 B
packages/esm-patient-search-app/dist/788.js 726 B 0 B
packages/esm-patient-search-app/dist/807.js 1.03 kB 0 B
packages/esm-patient-search-app/dist/833.js 867 B 0 B
packages/esm-patient-search-app/dist/main.js 48.2 kB +160 B (0%)
packages/esm-patient-search-app/dist/openmrs-esm-patient-search-app.js 3.3 kB 0 B
packages/esm-service-queues-app/dist/152.js 262 B 0 B
packages/esm-service-queues-app/dist/233.js 1.73 kB -1 B (0%)
packages/esm-service-queues-app/dist/255.js 2.22 kB 0 B
packages/esm-service-queues-app/dist/258.js 2.32 kB 0 B
packages/esm-service-queues-app/dist/263.js 3.54 kB +86 B (+2%)
packages/esm-service-queues-app/dist/271.js 4.12 kB 0 B
packages/esm-service-queues-app/dist/303.js 261 B 0 B
packages/esm-service-queues-app/dist/319.js 3.54 kB 0 B
packages/esm-service-queues-app/dist/328.js 2.99 kB +2 B (0%)
packages/esm-service-queues-app/dist/339.js 50.3 kB 0 B
packages/esm-service-queues-app/dist/389.js 1.89 kB 0 B
packages/esm-service-queues-app/dist/425.js 2.09 kB 0 B
packages/esm-service-queues-app/dist/460.js 4.4 kB 0 B
packages/esm-service-queues-app/dist/50.js 3.13 kB +92 B (+3%)
packages/esm-service-queues-app/dist/574.js 3.56 kB +34 B (+1%)
packages/esm-service-queues-app/dist/588.js 6.66 kB 0 B
packages/esm-service-queues-app/dist/591.js 16.9 kB 0 B
packages/esm-service-queues-app/dist/644.js 4.12 kB 0 B
packages/esm-service-queues-app/dist/694.js 2.74 kB +96 B (+4%)
packages/esm-service-queues-app/dist/696.js 570 B 0 B
packages/esm-service-queues-app/dist/729.js 3.1 kB 0 B
packages/esm-service-queues-app/dist/738.js 554 B 0 B
packages/esm-service-queues-app/dist/757.js 3.54 kB 0 B
packages/esm-service-queues-app/dist/784.js 2.63 kB 0 B
packages/esm-service-queues-app/dist/788.js 3.54 kB 0 B
packages/esm-service-queues-app/dist/806.js 1.6 kB -1 B (0%)
packages/esm-service-queues-app/dist/807.js 4.83 kB 0 B
packages/esm-service-queues-app/dist/833.js 4.09 kB 0 B
packages/esm-service-queues-app/dist/940.js 21.4 kB 0 B
packages/esm-service-queues-app/dist/981.js 3.03 kB +89 B (+3%)
packages/esm-service-queues-app/dist/983.js 157 kB 0 B
packages/esm-service-queues-app/dist/main.js 210 kB -2.58 kB (-1%)
packages/esm-service-queues-app/dist/openmrs-esm-service-queues-app.js 3.31 kB +1 B (0%)

compressed-size-action

Copy link
Contributor Author

@chibongho chibongho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comments on the most interesting parts of the PR.

// There might be futher changes pending future design of the config schema.
const { defaultStatusConceptUuid, defaultTransitionStatus } = concepts ?? ({} as any);

const columns = [
Copy link
Contributor Author

@chibongho chibongho Apr 26, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This (and similar columns arrays) are no longer hard-coded since they should be configuration-defined.

return columns;
}

function getColumnFromDefinition(t: TFunction, columnDef: ColumnDefinition): QueueTableColumn {
Copy link
Contributor Author

@chibongho chibongho Apr 26, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Big switch statement here to map columnType (defined in config) to actual QueueTableColumns that are used to render header and cells of a column in the DataTable. The switch statement enumerates all the predefined columns we support. Implementators wishing to have a custom column can use the extension-column columnType.

// returns the columns to display for a queue table of a particular queue + status.
// For a table displaying all entries of a particular queue, the status param should be null
// For a table displaying all entries from all queues, both params should be null
export function useColumns(queue: string, status: string): QueueTableColumn[] {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Function to determine the columns to display for a queue table of a particular queue + status

import vitalsConfigSchema, { type VitalsConfigObject } from './current-visit/visit-details/vitals-config-schema';
import biometricsConfigSchema, {
type BiometricsConfigObject,
} from './current-visit/visit-details/biometrics-config-schema';

export const defaultTablesConfig: TablesConfig = {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Definition of default columns to show in the queue table of the service queues app main page.

tableDefinitions: [
{
columns: ['patient-name', 'priority', 'comingFrom', 'status', 'wait-time', 'actions'],
appliedTo: { queue: '3113f164-68f0-11ee-ab8d-0242ac120002' },
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 different TableDefinitions here. The first one is for illustration purpose, to show that we can define the columns for a specific queue. The second one applies to all tables.

Copy link
Member

@mseaton mseaton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@chibongho looks great. A few comments. I see this is still in Draft - would be good to get a sense of what is remaining before moving it into a state that could be merged.

{
id: 'priority',
columnType: 'priority-column',
config: [],
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to specify config here if the array is empty? Also, we may want to always have config be an object for future flexibility and overall consistency. If the only option right now is an array, we can just make that the only property on the config

packages/esm-service-queues-app/src/config-schema.ts Outdated Show resolved Hide resolved
@@ -129,6 +180,11 @@ export const configSchema = {
_default: '',
_description: 'Custom URL to load default facility if it is not in the session',
},
tablesConfig: {
_type: Type.Object,
_description: 'TODO',
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you replace this todo?

{
id: 'status',
columnType: 'status-column',
config: [],
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment here as the one for priority


switch (columnType) {
case 'patient-name-column': {
return queueTableNameColumn(id, header ?? t('name', 'Name'));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The custom header here should also be run through the translation function, no? Potentially also with another optional property on columnDef to indicate which module the header translation string is defined in?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ugh... not that difficult, but this is a bit more annoying than I hoped (the i18n namespace needs to be specified when calling useTranslation, which means I need to pass the module name in before the t function is generated). Filed https://openmrs.atlassian.net/browse/O3-3138

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's also the framework's translateFrom() function, which might be easier than maintaining two t functions (since presumably the defaults should still come from this namespace).

import React from 'react';
import { type PatientIdColumnConfig } from '../../config-schema';
import { type QueueEntry, type QueueTableColumnFunction, type QueueTableCellComponentProps } from '../../types';

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Id -> Identifier search/replace in this file

@@ -172,9 +172,7 @@
"program": "Program",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably don't actually want these message strings to be removed, and there may be some we need to see added from the different built-in columns. There is a trick here that you need to do to ensure that the build scripts behave correctly - you can see how this is done in the root component of patient-chart-app. Look in the codebase for a comment that reads something like: DO NOT REMOVE THIS COMMENT and THE TRANSLATION KEYS AND VALUES USED IN THE COMMON LIB IS WRITTEN HERE

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I got around this by changing the extract-translations git hook to read in *.ts files.

@chibongho
Copy link
Contributor Author

@chibongho looks great. A few comments. I see this is still in Draft - would be good to get a sense of what is remaining before moving it into a state that could be merged.

@mseaton There are a few more QueueTableColumns currently marked as TODO that I'd like to define as part of this PR. They are relatively easy to do. The configuration of actions will be trickier and probably warrant a separate PR.

@chibongho chibongho changed the title (draft) - O3-3096 PoC configuration-driven queue table (feat) - O3-3096 service queues - onfiguration-driven queue table Apr 30, 2024
@chibongho chibongho marked this pull request as ready for review April 30, 2024 19:46
@chibongho chibongho requested a review from mseaton April 30, 2024 19:47
@chibongho
Copy link
Contributor Author

This is now ready for review. Thanks.

Copy link
Member

@mseaton mseaton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great to me @chibongho . I'm approving, but there are some minor changes to be made, mostly where you've copied/pasted code around and failed to rename everything. I don't need to re-review assuming you clean up the comments indicated.

I would be good to get at least one or two reviews from some of the more experienced react developers

headerModule?: string; // optional custom i18n translation module for the column's header. Must be used with the header option
} & (
| { columnType: 'patient-name-column' }
| { columnType: 'patient-identifier-column'; config: PatientIdentifierColumnConfig }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could probably be optional if we want, and if the type is not supplied, there is some default behavior (eg. get the first preferred identifier, or whatever is the primary identifier in the rest response, etc)

import dayjs from 'dayjs';
import { type QueueTableColumnFunction, type QueueTableCellComponentProps } from '../../types';

export const QueueTableWaitTimeCell = ({ queueEntry }: QueueTableCellComponentProps) => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be renamed to QueueTablePatientAgeCell

export const queueTablePatientAgeColumn: QueueTableColumnFunction = (key, header) => ({
key,
header,
CellComponent: QueueTableWaitTimeCell,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same, rename once above is renamed

) => {
const { identifierType } = config;

const getPatientId = (queueEntry: QueueEntry) => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

getPatientId -> getPatientIdentifier


const getPatientId = (queueEntry: QueueEntry) => {
for (const identifier of queueEntry.patient.identifiers) {
if (identifier.identifierType?.uuid == identifierType) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We likely want to check beyond this. If a patient has > 1 identifier of the same type, then we should prioritize a) any that are "preferred = true" first, then likely the most recently created second. Ideally the API could give you this, but otherwise should be done here.

return null;
};

const QueueTablePatientIdCell = ({ queueEntry }: QueueTableCellComponentProps) => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

QueueTablePatientIdCell -> QueueTablePatientIdentifierCell


// reprevents a column showing which queue a queue entry belongs to
export const QueueTableQueueCell = ({ queueEntry }: QueueTableCellComponentProps) => {
return <>{queueEntry.queue.display}</>;
};

export const queueTableQueueColumn: QueueTableColumn = (t) => ({
header: t('queue', 'Queue'),
export const queueTableQueueColumn: QueueTableColumnFunction = (key, header) => ({
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is really queueName right? Let's rename the component to this


export const queueTableVisitStartTimeColumn: QueueTableColumnFunction = (key, header) => {
function getVisitStartTime(queueEntry: QueueEntry) {
return queueEntry.visit.startDatetime;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

visit is theoretically nullable on queueEntry, so may want to make this a ?.

return queueEntry.visit.startDatetime;
}

const QueueTablePriorityCell = ({ queueEntry }: QueueTableCellComponentProps) => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy/pasted code needs to be renamed.

@@ -196,7 +197,6 @@
"queueLocation": "Queue Location",
"queueLocationRequired": "Queue location is required",
"queueName": "Queue name",
"queueNumber": "Queue Number",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this getting removed?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Turns out I forgot to have a case statement for this column. Thanks for catching.

@chibongho chibongho merged commit a22efef into main May 2, 2024
6 checks passed
@chibongho chibongho deleted the O3-3096 branch May 2, 2024 17:06
@chibongho chibongho changed the title (feat) - O3-3096 service queues - onfiguration-driven queue table (feat) - O3-3096 service queues - configuration-driven queue table May 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants