Skip to content

Commit

Permalink
fixing the review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
jeffibm committed Mar 1, 2024
1 parent 1ecf485 commit 34ad4da
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 48 deletions.
10 changes: 5 additions & 5 deletions app/javascript/components/AeInlineMethod/FilterNamespace.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
} from 'carbon-components-react';
import { noSelect } from './helper';

const FilterNamespace = ({ domains, filterOnChange }) => {
const FilterNamespace = ({ domains, onSearch }) => {
/** Function to render the search text. */
const renderSearchText = () => (
<div className="search-wrapper">
Expand All @@ -14,8 +14,8 @@ const FilterNamespace = ({ domains, filterOnChange }) => {
id="search-method"
labelText={__('Search')}
placeholder={__('Search with Name or Relative path')}
onClear={() => filterOnChange('')}
onChange={(event) => filterOnChange(event.target.value || noSelect)}
onClear={() => onSearch('')}
onChange={(event) => onSearch({ searchText: event.target.value || noSelect })}
/>
</div>
);
Expand All @@ -27,7 +27,7 @@ const FilterNamespace = ({ domains, filterOnChange }) => {
labelText="Select a domain"
defaultValue="option"
size="lg"
onChange={(event) => filterOnChange({ selectedDomain: event.target.value })}
onChange={(event) => onSearch({ selectedDomain: event.target.value })}
>
<SelectItem value={noSelect} text="None" />
{
Expand All @@ -48,7 +48,7 @@ export default FilterNamespace;

FilterNamespace.propTypes = {
domains: PropTypes.arrayOf(PropTypes.any),
filterOnChange: PropTypes.func.isRequired,
onSearch: PropTypes.func.isRequired,
};

FilterNamespace.defaultProps = {
Expand Down
10 changes: 5 additions & 5 deletions app/javascript/components/AeInlineMethod/NamespaceSelector.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ const NamespaceSelector = ({ onSelectMethod, selectedIds }) => {
}, []);

/** Function to handle search text and drop-down item onchange events. */
const handleFilterOnChange = (filterData) => {
const onSearch = (filterData) => {
updateData({ loading: true });
const searchText = filterData.searchText ? filterData.text : data.searchText;
const searchText = filterData.searchText ? filterData.searchText : data.searchText;
const selectedDomain = filterData.selectedDomain ? filterData.selectedDomain : data.selectedDomain;
const url = searchUrl(selectedDomain, searchText);
http.get(url)
Expand All @@ -46,7 +46,7 @@ const NamespaceSelector = ({ onSelectMethod, selectedIds }) => {
};

/** Function to handle the click events for the list. */
const onCellClickHandler = (selectedRow, cellType, checked) => {
const onCellClick = (selectedRow, cellType, checked) => {
const selectedItems = cellType === CellAction.selectAll
? data.methods.map((item) => item.id)
: [selectedRow];
Expand All @@ -64,14 +64,14 @@ const NamespaceSelector = ({ onSelectMethod, selectedIds }) => {
rowCheckBox
sortable={false}
gridChecks={selectedIds}
onCellClick={(selectedRow, cellType, event) => onCellClickHandler(selectedRow, cellType, event.target.checked)}
onCellClick={(selectedRow, cellType, event) => onCellClick(selectedRow, cellType, event.target.checked)}
/>
)
: <NotificationMessage type="error" message={__('No methods available.')} />);

return (
<div className="inline-method-selector">
<FilterNamespace domains={data.domains} filterOnChange={(filterData) => handleFilterOnChange(filterData)} />
<FilterNamespace domains={data.domains} onSearch={(filterData) => onSearch(filterData)} />
<div className="inline-contents-wrapper">
{
data.loading
Expand Down
62 changes: 24 additions & 38 deletions app/javascript/components/AeInlineMethod/index.jsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useState, useEffect } from 'react';
import React, { useState } from 'react';
import PropTypes from 'prop-types';
import {
Modal, Button, ModalBody, Accordion, AccordionItem,
Expand All @@ -18,42 +18,21 @@ const AeInlineMethod = ({ type }) => {
rows: [],
});

useEffect(() => {
if (!data.isModalOpen) {
if (data.selectedIds.length > 0) {
http.get(`${namespaceUrls.aeMethodsUrl}?ids=${data.selectedIds.map((str) => parseInt(str, 10))}`)
.then(({ methods }) => {
setData({ ...data, rows: formatListMethods(methods) });
});
} else {
setData({ ...data, rows: [] });
}
}
}, [data.isModalOpen]);

/** Function to show/hide the modal. */
const showModal = (status) => setData({ ...data, isModalOpen: status });

/** Function to handle the select-all check-box click event. */
const onSelectAll = (selectedItems, checked) => {
setData({
...data,
selectedIds: checked ? [...selectedItems] : [],
});
};
const onSelectAll = (selectedItems, checked) => setData({ ...data, selectedIds: checked ? [...selectedItems] : [] });

/** Function to handle the list row selection events.
* selectedItem is passed as an array. */
const onItemSelect = (selectedItem, checked) => {
const onItemSelect = (selectedItems, checked) => {
if (checked) {
data.selectedIds.push(selectedItem[0].id);
data.selectedIds.push(selectedItems[0].id);
} else {
data.selectedIds = data.selectedIds.filter((item) => item !== selectedItem[0].id);
data.selectedIds = data.selectedIds.filter((item) => item !== selectedItems[0].id);
}
setData({
...data,
selectedIds: [...data.selectedIds],
});
setData({ ...data, selectedIds: [...data.selectedIds] });
};

/** Function to add/remove an selected items. */
Expand All @@ -66,13 +45,21 @@ const AeInlineMethod = ({ type }) => {

/** Function to handle the click events for the list. */
const onCellClickHandler = (item) => {
if (item && item.callbackAction) {
if (item.callbackAction === 'removeMethod') {
setData({
rows: data.rows.filter((row) => row.id !== item.id),
selectedIds: data.selectedIds.filter((id) => id !== item.id),
});
}
if (item && item.callbackAction && item.callbackAction === 'removeMethod') {
setData({
rows: data.rows.filter((row) => row.id !== item.id),
selectedIds: data.selectedIds.filter((id) => id !== item.id),
});
}
};

/** Function to handle the modal submit action. */
const submitModal = () => {
if (data.selectedIds.length > 0) {
http.get(`${namespaceUrls.aeMethodsUrl}?ids=${data.selectedIds.map((str) => parseInt(str, 10))}`)
.then(({ methods }) => setData({ ...data, rows: formatListMethods(methods), isModalOpen: false }));
} else {
setData({ ...data, rows: [], isModalOpen: false });
}
};

Expand All @@ -86,7 +73,7 @@ const AeInlineMethod = ({ type }) => {
primaryButtonText={__('OK')}
secondaryButtonText={__('Cancel')}
onRequestClose={() => showModal(false)}
onRequestSubmit={() => showModal(false)}
onRequestSubmit={() => submitModal()}
onSecondarySubmit={() => showModal(false)}
>
<ModalBody>
Expand Down Expand Up @@ -115,10 +102,9 @@ const AeInlineMethod = ({ type }) => {
/>
)
: (
<>
<br />
<div className="ae-inline-methods-notification">
<NotificationMessage type="info" message={__('No methods selected.')} />
</>
</div>
));

const renderAddButton = () => (
Expand Down
4 changes: 4 additions & 0 deletions app/javascript/components/AeInlineMethod/style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -66,5 +66,9 @@
display: flex;
justify-content: flex-end;
}

.ae-inline-methods-notification {
margin-top: 20px;
}
}
}

0 comments on commit 34ad4da

Please sign in to comment.