Skip to content

Commit

Permalink
ASSETS-88912 : [Issue] Last page number is not matching with total nu…
Browse files Browse the repository at this point in the history
…mber of pages (#105)

* ASSETS-88894 GRAPHQL Persisted Query Code (#53)

* GRAPHQL POC Demo code to call a Persisted GraphQL query for Content Fragments

* Updated the code call the GraphQL Persisted query from the QA AEM Author server, and also to authenticate using the JWT Bearer token

* Renamed file test-graphql.js to graphql.js

Added function graphqlAllCampaign() to get call GraphQL persisted query for All Campains
Added function graphqlCampaignByName(campaignName) to get call GraphQL persisted query to get campaign by campaign name.
Added function getGraphqlEndpoint() to get the value of property  aemGraphqlEndpoint from the config file admin-config.json

* Changed queryName to getAllCampaings

* Rollback to 3/15/24 Commit a519a51 before adding GraphQL test code

* Delete test graphql code

* ASSETS-88895 : Show HCV report pages to limited users (#55)

* security.js  updated function checkUserAccess for users that are members of the imsUserGroup, that if a page has the property reporting-access then access to the page is only granted if the user is member of te group defined by the property imsReportingGroup in the file admin-config.xlsx

site-config.js : Updated the function getQuickLinkConfig to show the quick link to users who are members of the new column Group in shared-quicklinks tab of file site-config.xlsx

* securiity.js : Deleted function isReportingAccessPage() as it is not needed any more.
Updated function checkUserAccess() : Update code for non public pages, check if the current page path is in the pages returned by the function getQuickLinks. If it does not exist in quick links, then the user does not have access to the page.
The functionQuickLinks already has logic to check if a page is only accessible by users of a page group.

Renamed function  checkGroupAccess(adminConfigGroupPropertyName)  to  checkPageGroupAccess(adminConfigGroupPropertyName)

* Campaign List block for Marketing Dashboard page (#56)

* initial commit, new blocks/files

* rename files, start implementing

* continuing to implement/adjust styling

* numerous changes

- finish building bones of list component
- build bones of pagination/footer
- add icons for products (will likely need more)
- build javascript for pagination (cleanup needed)
- build javascript for sorting list

---------

Co-authored-by: Michael Dickson <[email protected]>

* updated hydration-utils.js (#54)

MH: Added Firefly  product to AA Modal 'Product' Field List

* Assets 98990 - Dynamic campaign list (#61)

* initial commit, new blocks/files

* rename files, start implementing

* continuing to implement/adjust styling

* numerous changes

- finish building bones of list component
- build bones of pagination/footer
- add icons for products (will likely need more)
- build javascript for pagination (cleanup needed)
- build javascript for sorting list

* finish pagination

* Updates to css/js to better align to mockup

* ASSETS-88895 : Updated function getQuickLinkConfig() to still work if the row.Group is undefined or does not exist (#60)

* security.js  updated function checkUserAccess for users that are members of the imsUserGroup, that if a page has the property reporting-access then access to the page is only granted if the user is member of te group defined by the property imsReportingGroup in the file admin-config.xlsx

site-config.js : Updated the function getQuickLinkConfig to show the quick link to users who are members of the new column Group in shared-quicklinks tab of file site-config.xlsx

* securiity.js : Deleted function isReportingAccessPage() as it is not needed any more.
Updated function checkUserAccess() : Update code for non public pages, check if the current page path is in the pages returned by the function getQuickLinks. If it does not exist in quick links, then the user does not have access to the page.
The functionQuickLinks already has logic to check if a page is only accessible by users of a page group.

Renamed function  checkGroupAccess(adminConfigGroupPropertyName)  to  checkPageGroupAccess(adminConfigGroupPropertyName)

* Updated function getQuickLinkConfig() to still work if the row.Group is undefined or does not exist

* Added function export async function graphqlFilterOnMarketingInitiative(marketingInitiative) (#64)

Which calls the persisted query gmo/filter-on-marketing-initiative
with example parameters

{
  "marketingInitiative": "FY24Q1-Q2_AdobeExpress_level Up"
}

https://author-p108396-e1046543.adobeaemcloud.com/graphql/execute.json/gmo/filter-on-marketing-initiative%3BmarketingInitiative=FY24Q1-Q2_AdobeExpress_level%20Up

* Campaign List filters display (#65)

* initial html structure setup

* refactor from select to div implementation

Select with multiselect displays as a list, not a dropdown

* finish refactor, enable visual functionality

- added all javascript needed for visual functionality
- finished refactoring structure

* Assets 98990 (#66)

* initial commit, new blocks/files

* rename files, start implementing

* continuing to implement/adjust styling

* numerous changes

- finish building bones of list component
- build bones of pagination/footer
- add icons for products (will likely need more)
- build javascript for pagination (cleanup needed)
- build javascript for sorting list

* finish pagination

* Updates to css/js to better align to mockup

* minor updates

- update graphql query to have hardcoded offset/limit (to resolve error)
- remove comments
- add placeholder 'refresh date' message and css
- move css for main body to accomodate above message

* add firefly icon

---------

Co-authored-by: Tyrone Tse <[email protected]>

* ASSETS-88899 : [Issue] Collection Detail Page is Redirecting to No-Access Page (#68)

* Added function hideQuickLinks()

* Added the hide field to the  shared-quicklinks config/worksheet
/blocks/adp-header/adp-header.js : Updated the code to only show links if hide!=='true'
/scripts/security.js : Updated function checkUserAccess to get the current URL without the parameters for /collection/<collection id> and /share/<asset id>
/scripts/site-config.js : Updated function to include the hide field

* Refactored the If statement logic

* Assets 98992- Campaign details/overview (#69)

* initial block structure

* start mocking up structure

* many changes

- finish overview tab mockup
- (mostly) finish deliverables tab

* fix css- add top/bottom borders to rows

* delete invalid metadata from new svgs

* updates for mvp

- Rename and hide various elements of page
- Refactor tablebuilding function to deal with items that are missing
  categorization properties

* hide total assets

* ASSETS-88900 : Update Pagination for gmo-campiagn-list Block (#70)

* gmo-campagin-list refactored to use  persisted query function
	function graphqlCampaignPaginated(first,cursor) to get a page of Campaigns at a time

* Refactored the Navigation code for Previous Page, Next Page, Select Number of Items on a Page.
Refactored the code for Repaginate for when the number of items page is changed
Show current page status

* graphql.js : Updated function graphqlAllCampaigns(first,cursor)  to call getAllCampaigns persisted query with parameters first and cursor
Deleted function  graphqlCampaignPaginated(first,cursor)

Updated gmo-campaign-list/gmo-campaign-list.js : To use persisted query graphqlAllCampaigns(first,cursor) and refactored the pagination to call the decorate function to call the graphql query each time to get the next or previous page

* Fixed logic in calculating the nextCursor

* Removed all debug console.log statements

* Removed  testCampaigns array of test campaign data, which now has been replaced by data from graphql

* Renamed the variable testConfig to headerConfig

* Campaign details block (#71)

* initial block structure

* start mocking up structure

* many changes

- finish overview tab mockup
- (mostly) finish deliverables tab

* fix css- add top/bottom borders to rows

* delete invalid metadata from new svgs

* updates for mvp

- Rename and hide various elements of page
- Refactor tablebuilding function to deal with items that are missing
  categorization properties

* hide total assets

* add status bar display

Also adjusted demo data slightly to include due date and lead

* update css/html to align with mockup and mvp

* resolve border bug

* implemented requested changes

* ASSETS-88901 : (Backend) Campaign Page: Filters (#72)

* graphql.js : Added functions graphqlProductList and graphqlStatusList
gmo-campaign-header.js : Updated code to build Status dropdown from function graphqlStatusList
Updated code to build Product dropdown from function graphqlProductList

* /blocks/gmo-campaign-list/gmo-campaign-list.js => Added custom event listener for custom event  gmoCampaignListBlock
which allows the event gmoCampaignListBlock to be called from the block component gmo-campaign-header.js

/blocks/gmo-campaign-header/gmo-campaign-header.js :
Created new function sendGmoCampaignListBlockEvent()
that calls the custom event   gmoCampaignListBlock
from the gmo-campaign-header.

This will trigger the custom event in the /blocks/gmo-campaign-list
to call the graphql persisted query getAllCampaigns with a filter based on the selected values from the dropdown lists for
Business Line
Status and Product

* graphql.js : Added test function graphAllCampaignsFilterfirst,cursor,filter) : Which has the filter parameter which is the graphQL filter object
Added function generateFilterJSON(filterParams)  which generates the graphQL filter object from an Array of parameters.

/blocks/gmo-campaign-header/gmo-campaign-header.js : Added event on the campaign-search field, to trigger the sendGmoCampaignBlockEvent after 3 characters are typed, later this will be replaced by a Campaign Suggested List generated as the user types

/blocks/gmo-campaign-list/gmo-campaign-list.js : Added code build the graphQL filter object from the Campaign Search fields and Drop Downs
Updated the function decorate to have new parameter graphQLFilter
So that the function graphqlAllCampaignsFilter(numPerPage,  cursor,graphQLFilter) can be called

* Adde autocomplete list CSS, JS and HMTL for the campaign search field.

* graphql.js Update function graphCampaignByName to use persisted query getCampaignNames used for autocomplete list for Campaign Name search
gmo-campaign-list.js : Changed campaignName search to use filter operater : '='
/gmo-campaign-header.js : Updated campaign search autocompleteList to trigger sendCampaignListBlockEvent to make autocomplete search work

* gmo-campaign-header.js : Updated function resetAllFilters() to call function sendGmoCampaignListBlockEvent();
gmo-campaign-list.js : Updated campaignCount to call function graphqlCampaignCount(graphqlFilter) with graphqlFilter
graphql.js : Updated function graphCampaignCount : Added filter parameter, and call persisted query  getCampaignNameFilter

* Removed console.log messages

* Fixed bug with currentPageInfo.nextCursor

* Fixed bug in calculation of cursor to use for the previous page logic

* graphql.js : Deleted function graphqlAllCampaigns(first,cursor) , replaced function  graphqlStatusList()  and  graphqlProductList()  with  function graphqlQueryNameList(queryNameList)
Variables baseApiUrl and projectId are now global/class level variables.

gmo-campaign-header.js : Close dropdown list when a value is selected

* update campaign with program

---------

Co-authored-by: Shivani gupta <[email protected]>

* ASSETS-88901 : Campaign Header: Dropdown List Only Allow Single Value to Be Selected (#73)

* graphql.js : Added functions graphqlProductList and graphqlStatusList
gmo-campaign-header.js : Updated code to build Status dropdown from function graphqlStatusList
Updated code to build Product dropdown from function graphqlProductList

* /blocks/gmo-campaign-list/gmo-campaign-list.js => Added custom event listener for custom event  gmoCampaignListBlock
which allows the event gmoCampaignListBlock to be called from the block component gmo-campaign-header.js

/blocks/gmo-campaign-header/gmo-campaign-header.js :
Created new function sendGmoCampaignListBlockEvent()
that calls the custom event   gmoCampaignListBlock
from the gmo-campaign-header.

This will trigger the custom event in the /blocks/gmo-campaign-list
to call the graphql persisted query getAllCampaigns with a filter based on the selected values from the dropdown lists for
Business Line
Status and Product

* graphql.js : Added test function graphAllCampaignsFilterfirst,cursor,filter) : Which has the filter parameter which is the graphQL filter object
Added function generateFilterJSON(filterParams)  which generates the graphQL filter object from an Array of parameters.

/blocks/gmo-campaign-header/gmo-campaign-header.js : Added event on the campaign-search field, to trigger the sendGmoCampaignBlockEvent after 3 characters are typed, later this will be replaced by a Campaign Suggested List generated as the user types

/blocks/gmo-campaign-list/gmo-campaign-list.js : Added code build the graphQL filter object from the Campaign Search fields and Drop Downs
Updated the function decorate to have new parameter graphQLFilter
So that the function graphqlAllCampaignsFilter(numPerPage,  cursor,graphQLFilter) can be called

* Adde autocomplete list CSS, JS and HMTL for the campaign search field.

* graphql.js Update function graphCampaignByName to use persisted query getCampaignNames used for autocomplete list for Campaign Name search
gmo-campaign-list.js : Changed campaignName search to use filter operater : '='
/gmo-campaign-header.js : Updated campaign search autocompleteList to trigger sendCampaignListBlockEvent to make autocomplete search work

* gmo-campaign-header.js : Updated function resetAllFilters() to call function sendGmoCampaignListBlockEvent();
gmo-campaign-list.js : Updated campaignCount to call function graphqlCampaignCount(graphqlFilter) with graphqlFilter
graphql.js : Updated function graphCampaignCount : Added filter parameter, and call persisted query  getCampaignNameFilter

* Removed console.log messages

* Fixed bug with currentPageInfo.nextCursor

* Fixed bug in calculation of cursor to use for the previous page logic

* graphql.js : Deleted function graphqlAllCampaigns(first,cursor) , replaced function  graphqlStatusList()  and  graphqlProductList()  with  function graphqlQueryNameList(queryNameList)
Variables baseApiUrl and projectId are now global/class level variables.

gmo-campaign-header.js : Close dropdown list when a value is selected

* update campaign with program

* Updated function toggleOption : To only allow a single option to be selected in the dropdown list

---------

Co-authored-by: Shivani gupta <[email protected]>

* Assets 98993 (#75)

* many updates

* finish dynamic properties

- all properties should be dynamic based on graphql data
- refactored some common lookups to a shared javascript file
- updated overflow for overview/description
- made status, products more presentable
- more elegant handling of empty audience and kpi lists

* test rename svg to resolve issue

* finish updating icon names and mapping

* resolve pr comments

* Release 05.09.2024 (#78)

* Added mapping for uuid (#74)

Co-authored-by: Mathieu Lessard <[email protected]>

* Removed Prefix from Displayed UUID Value on Assets (#76)

---------

Co-authored-by: Mathieu Lessard <[email protected]>
Co-authored-by: Christopher Heintzman <[email protected]>

* ASSETS-88902 : Add Target Geo Filter in the Landing Page (update all dropdown lists to use updated graphql queries) (#77)

* Add hardcoded Geo(graphy) dropdown list filter to Campaign Header

* Fixed Previous Page pagination logic for calculating the cursor for the Previous page

* Updated Products and Status Dropdown Lists code to use updated graphql persisted queries

* Assets 98994 (#81)

* many updates

* finish dynamic properties

- all properties should be dynamic based on graphql data
- refactored some common lookups to a shared javascript file
- updated overflow for overview/description
- made status, products more presentable
- more elegant handling of empty audience and kpi lists

* test rename svg to resolve issue

* finish updating icon names and mapping

* initial changeover from static to dynamic data

* adjustments based on feedback

* additional changes based on feedback

* minor bugfix, null checks

* squash final bug with read more

* final touches

* combine two graphql functions with duplicated code

* bugfixes per pr review

* ASSETS-88902 :  Make the Business Line Dropdown List filter values in the Product Dropdown List filter (#82)

* Add hardcoded Geo(graphy) dropdown list filter to Campaign Header

* Fixed Previous Page pagination logic for calculating the cursor for the Previous page

* Updated Products and Status Dropdown Lists code to use updated graphql persisted queries

* Updated Business Line dropdown list to be populated by graphql persisted query getBusinessLine.
Updated Geo dropdown list to be populated by graphql persisted query getGeoList

* Updated the Business Line dropdown list to filter the Products List when a Business Line is selected.
When a Business Line option is deselected then the Products List shows all products.

* Reduced the sample dropdown list options

* make links configurable, remove extraneous logs (#83)

* ASSETS-88903 : [Issue] Product Name and Label are Undefined (#84)

* Refactored the function buildProduct(product) to handle the condition when a product is not defined in the JSON object productMappings[product] which is defined in /scripts/shared-campaigns.js

* Removed comment

* ASSETS-88904 : Update Asset Thumbnail for Campaign List Entries (#85)

* Refactored the function buildProduct(product) to handle the condition when a product is not defined in the JSON object productMappings[product] which is defined in /scripts/shared-campaigns.js

* Added function searchAsset(programName, campaignName) to get the asset URL

* Changed alt text to use assets repo-name property

* Renamed/Moved AssetsDatasource.js to /scripts/assets
gmo-campaign-list.js : Added logic to only allow blockConfig to be set on initial call to function decorate(block ...
otherwise the values from blockConfig are overwritten when paginating to next page.

gmo-campaign-details.js : Added campaign Image
gmo-campaign-details.css : Updated CSS to display campaign Image

* gmo-campaign-list.js : Deleted comment
/scripts/assets.js : Updated to use createSearchEndpoint
/scripts/scripts.js : Added export to  export function createSearchEndpoint() {

* Fixed bug when product is not defined in productMappings in /scripts/shared-campaigns.js

* gmo-campaign-list.js : Removed  iconImage.alt = "Failed to load image";
/scripts/assets.js : Updated facetFilters to an Array of Stings instead of Array of objects

* Assets 98996 (#88)

* initial grouping functionality

* add sorting, label mappings

* readd expand/collapse chevrons, add counts

* add sort by date in groups

* add important links dynamic generation

* resolve bug with detailpage link

* adjust width on links in deliverables tab

* merge 12024 in and adjust width for links

* update property name for revised completion date

* implement graphql query for status mapping

* ASSETS-88905 : Add Fields to the Overview Tab (#87)

* Added Target Market Area lists

function function createKPI(kpi)  is renamed createLI(li)

Added function buildTargetMarketAreaList(p0TargetMarketArea,p1TargetMarketArea) {

* gmo-campaign-details.css : CSS fixes for scope-tag to not wrap
gmo-campaign-details.js : Added Target Market Area and Platforms
refactored async function buildChannelScope(scopeTypeId, scopes, block)
to be able to display data for data based for a specified  CSS ID

* Added function getUniqueItems(items, property)
to get unique values for deliverableType and platforms

* Renamed function async function buildChannelScope(scopeTypeId, scopes, block)
to  async function buildFieldScopes(scopeTypeId, scopes, block)

* Added global variable globalGraphFliter (#92)

Previous and Next Buttons now call function decorate(block, numPerPage = currentNumberPerPage, cursor = '', previousPage = false, nextPage = false, graphQLFilter = {})
with graphFilter = currentGraphqlFilter

* Assets 98996 (#93)

* initial grouping functionality

* add sorting, label mappings

* readd expand/collapse chevrons, add counts

* add sort by date in groups

* add important links dynamic generation

* resolve bug with detailpage link

* adjust width on links in deliverables tab

* merge 12024 in and adjust width for links

* update property name for revised completion date

* implement graphql query for status mapping

* add deliverabletype graphql

- todo: refactor, some superfluous function(s) can be removed

* refactor product list to use graphql

* fix deliverable type tags, fix multiline text

* fix sort on marketing moments column

* removing merge artifact

* resolve PR comments

* platforms mapping with graphql (#94)

- also cleaned up extraneous/defunct code

* Refactor sort icons (#95)

* platforms mapping with graphql

- also cleaned up extraneous/defunct code

* refactor chevrons for column sort

* add title attribs

* ASSETS-88908 : Remove Console Error in Marketing Dashboard page  and Campaign Details when no image is found (#96)

* assets.js : Refactored code to eliminate console.log error
gmo-campaign-list.js : Removed  console.error("No campaign image found:", error);

* Eliminated  JavaScript errors when image is not found

* Display total assets = 0 when the campaign image does not exist

* Code cleanup (#98)

* platforms mapping with graphql

- also cleaned up extraneous/defunct code

* refactor chevrons for column sort

* add title attribs

* remove kpi column

* rename blocks

* cleaning up redundant code

* continuing cleanup

* fix pagination bug

* fix css bug in audience card

* Updated product mapping label to text "Not Available" when the product mapping label is null (#99)

* Code cleanup part 2 (#100)

* platforms mapping with graphql

- also cleaned up extraneous/defunct code

* refactor chevrons for column sort

* add title attribs

* remove kpi column

* rename blocks

* cleaning up redundant code

* continuing cleanup

* fix pagination bug

* fix css bug in audience card

* cleanup, readd missing row

- remove commented code
- remove commented html
- readd campaign name to overview tab if available

* resolve undone null check for product label

* handle bad response from product icon map

* Added  function closeAllDropDowns() (#101)

Added function handleClickOutside(event)

Updated function attachEventListeners()
    // Add event listener for clicks outside of dropdowns
    document.addEventListener('click', handleClickOutside);

Added function  resetProductsDropDown();

Updated  function resetAllFilters() to call function   resetProductsDropDown();

* Sticky deliverables header, update graphql endpoints (#102)

* platforms mapping with graphql

- also cleaned up extraneous/defunct code

* refactor chevrons for column sort

* add title attribs

* remove kpi column

* rename blocks

* cleaning up redundant code

* continuing cleanup

* fix pagination bug

* fix css bug in audience card

* cleanup, readd missing row

- remove commented code
- remove commented html
- readd campaign name to overview tab if available

* resolve undone null check for product label

* handle bad response from product icon map

* update query endpoints, css tweak on deliverables

* Added tool tip for Program Name and Campaign Name (#103)

* remove duplicate icons

* Change default items per page from 4 to 8
Changed undefined message for Campaign to  Marketing Moment Not Available

* Remove debugging from graphql.js

* Deleted function debug_console()

---------

Co-authored-by: Shivani Gupta <[email protected]>
Co-authored-by: Michael Dickson <[email protected]>
Co-authored-by: Samruddhi <[email protected]>
Co-authored-by: mdickson-adbe <[email protected]>
Co-authored-by: Shivani gupta <[email protected]>
Co-authored-by: mathieu-lessard <[email protected]>
Co-authored-by: Mathieu Lessard <[email protected]>
Co-authored-by: Christopher Heintzman <[email protected]>
Co-authored-by: Shivani gupta <[email protected]>
  • Loading branch information
10 people authored Jun 4, 2024
1 parent 9c80f01 commit 112dc3a
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 21 deletions.
19 changes: 5 additions & 14 deletions blocks/gmo-program-list/gmo-program-list.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,13 @@ const headerConfig = [
}
]

const DEFAULT_ITEMS_PER_PAGE = 8;
//Global variables used by helper functions
let currentPageInfo = {};
let cursorArray = [];
let currentPage = 1;
let currentNumberPerPage = 4;
let currentNumberPerPage = DEFAULT_ITEMS_PER_PAGE;

let currentGraphqlFilter = {};
//Get Campaign Count for pagination
let campaignCount = await graphqlCampaignCount();
Expand All @@ -62,7 +64,7 @@ document.addEventListener('gmoCampaignListBlock', async function() {
currentPageInfo = {};
cursorArray = [];
currentPage = 1;
currentNumberPerPage = 4;
currentNumberPerPage = DEFAULT_ITEMS_PER_PAGE;

decorate( block, currentNumberPerPage, '', false, false, currentGraphqlFilter);

Expand Down Expand Up @@ -120,16 +122,6 @@ export default async function decorate(block, numPerPage = currentNumberPerPage,
footerNext.classList.remove('active');
}
decorateIcons(block);

//Debug Global Variables
//debug_console();
}

function debug_console(){
console.log('currentPageInfo',currentPageInfo);
console.log('cursorArray',cursorArray);
console.log('currentPage',currentPage);
console.log('campaignCount',campaignCount);

}

Expand Down Expand Up @@ -193,7 +185,7 @@ async function buildCampaignList(campaigns, numPerPage) {
<span class="tooltip">Program Name</span>
</div>
<div class='campaign-name'>
${checkBlankString(campaign.node.campaignName)}
${checkBlankString(campaign.node.campaignName,'Marketing Moment Not Available')}
<span class="tooltip">Marketing Moment</span>
</div>
`;
Expand Down Expand Up @@ -351,7 +343,6 @@ function buildListFooter(rows, rowsPerPage) {
const footerPerPageDropdown = document.createElement('select');
footerPerPageDropdown.id = 'per-page';
footerPerPageDropdown.innerHTML = `
<option value="4">4</option>
<option value="8">8</option>
<option value="16">16</option>
<option value="32">32</option>
Expand Down
6 changes: 2 additions & 4 deletions scripts/graphql.js
Original file line number Diff line number Diff line change
Expand Up @@ -216,9 +216,7 @@ export function generateFilterJSON(filterParams) {

// Convert the result object to JSON
const jsonResult = JSON.stringify(result,null,4);
// Logging the JSON to see the output
console.debug('Graphql filter',jsonResult);
console.debug('result', result);

return result;
}

Expand All @@ -245,4 +243,4 @@ export async function executeQuery(queryString) {
console.error('Error fetching data: ', error);
throw error; // Rethrow or handle error as appropriate
});
};
};
6 changes: 3 additions & 3 deletions scripts/shared-program.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ export async function getProductMapping(product) {
/*
* Check for undefined/blank property and supply 'Not Available' if no data
*/
export function checkBlankString(string) {
if (string == undefined || string == '' ) {
return 'Not Available';
export function checkBlankString(string, notAvailableText = 'Not Available') {
if (string == undefined || string == '') {
return notAvailableText;
} else {
return string;
}
Expand Down

0 comments on commit 112dc3a

Please sign in to comment.