Merge branch 'release-frozen' into release

This commit is contained in:
somangshu 2021-06-29 17:07:31 +05:30
commit a42e89a8a2
12 changed files with 15 additions and 157 deletions

View File

@ -11,10 +11,7 @@ describe("Test Create Api and Bind to Table widget", function() {
it("Test_Add Paginate with Table Page No and Execute the Api", function() { it("Test_Add Paginate with Table Page No and Execute the Api", function() {
/**Create an Api1 of Paginate with Table Page No */ /**Create an Api1 of Paginate with Table Page No */
cy.createAndFillApi( cy.createAndFillApi(this.data.paginationUrl, this.data.paginationParam);
this.data.paginationUrl,
"users?page={{Table1.pageNo}}&pageSize={{Table1.defaultPageSize||10}}",
);
cy.RunAPI(); cy.RunAPI();
}); });
@ -89,46 +86,5 @@ describe("Test Create Api and Bind to Table widget", function() {
cy.ValidatePaginationInputData(); cy.ValidatePaginationInputData();
cy.get(publishPage.backToEditor).click({ force: true }); cy.get(publishPage.backToEditor).click({ force: true });
cy.ValidatePaginateResponseUrlData(apiPage.apiPaginationNextTest); cy.ValidatePaginateResponseUrlData(apiPage.apiPaginationNextTest);
cy.wait(5000);
});
it("Table-Text, Validate Server Side Pagination of Paginate with Table Default Page Size and Total Record Count", function() {
cy.SearchEntityandOpen("Table1");
cy.callApi("Api1");
cy.wait(300);
cy.testJsontext("tabledata", "{{Api1.data.users}}");
cy.CheckWidgetProperties(commonlocators.serverSidePaginationCheckbox);
cy.wait(300);
//Add on page size change action
cy.get(commonlocators.tablePageSizeChangeAction).click({
force: true,
});
cy.wait(300);
cy.get(commonlocators.chooseAction)
.children()
.contains("Call An API")
.click();
cy.wait(300);
cy.get(commonlocators.chooseAction)
.children()
.contains("Api1")
.click();
// cy.get(".t--table-widget-next-page").should("have.attr", "disabled");
// Add value of default page count and total page count
cy.testJsontext("totalrecordcount", 20);
cy.testJsontext("defaultpagesize", 5);
cy.wait("@postExecute");
cy.wait(500);
cy.get(".t--table-widget-next-page").should("not.have.attr", "disabled");
cy.ValidateTableData("1");
cy.get(commonlocators.tableNextPage).click({ force: true });
cy.wait("@postExecute");
cy.wait(500);
cy.ValidateTableData("6");
}); });
}); });

View File

@ -42,7 +42,7 @@ describe("Test Suite to validate copy/paste table Widget", function() {
.last() .last()
.click(); .click();
cy.get(apiwidget.propertyList).then(function($lis) { cy.get(apiwidget.propertyList).then(function($lis) {
expect($lis).to.have.length(10); expect($lis).to.have.length(8);
expect($lis.eq(0)).to.contain("{{Table1Copy.selectedRow}}"); expect($lis.eq(0)).to.contain("{{Table1Copy.selectedRow}}");
expect($lis.eq(1)).to.contain("{{Table1Copy.selectedRows}}"); expect($lis.eq(1)).to.contain("{{Table1Copy.selectedRows}}");
}); });

View File

@ -38,7 +38,7 @@ describe("Entity explorer tests related to widgets and validation", function() {
.last() .last()
.click({ force: true }); .click({ force: true });
cy.get(apiwidget.propertyList).then(function($lis) { cy.get(apiwidget.propertyList).then(function($lis) {
expect($lis).to.have.length(10); expect($lis).to.have.length(8);
expect($lis.eq(0)).to.contain("{{Table1.selectedRow}}"); expect($lis.eq(0)).to.contain("{{Table1.selectedRow}}");
expect($lis.eq(1)).to.contain("{{Table1.selectedRows}}"); expect($lis.eq(1)).to.contain("{{Table1.selectedRows}}");
expect($lis.eq(2)).to.contain("{{Table1.selectedRowIndex}}"); expect($lis.eq(2)).to.contain("{{Table1.selectedRowIndex}}");
@ -47,8 +47,6 @@ describe("Entity explorer tests related to widgets and validation", function() {
expect($lis.eq(5)).to.contain("{{Table1.pageSize}}"); expect($lis.eq(5)).to.contain("{{Table1.pageSize}}");
expect($lis.eq(6)).to.contain("{{Table1.isVisible}}"); expect($lis.eq(6)).to.contain("{{Table1.isVisible}}");
expect($lis.eq(7)).to.contain("{{Table1.searchText}}"); expect($lis.eq(7)).to.contain("{{Table1.searchText}}");
expect($lis.eq(8)).to.contain("{{Table1.defaultPageSize}}");
expect($lis.eq(9)).to.contain("{{Table1.totalRecordsCount}}");
}); });
}); });

View File

@ -109,6 +109,5 @@
"paginationButton": ".rc-pagination-item", "paginationButton": ".rc-pagination-item",
"switchWidgetActive": ".t--switch-widget-active", "switchWidgetActive": ".t--switch-widget-active",
"switchWidgetInActive": ".t--switch-widget-inactive", "switchWidgetInActive": ".t--switch-widget-inactive",
"switchWidgetLoading": ".t--switch-widget-loading", "switchWidgetLoading": ".t--switch-widget-loading"
"tablePageSizeChangeAction": ".t--property-control-onpagesizechange .t--open-dropdown-Select-Action"
} }

View File

@ -31,7 +31,6 @@ interface TableProps {
width: number; width: number;
height: number; height: number;
pageSize: number; pageSize: number;
tablePageSize: number;
widgetId: string; widgetId: string;
widgetName: string; widgetName: string;
searchKey: string; searchKey: string;
@ -39,8 +38,6 @@ interface TableProps {
columnSizeMap?: { [key: string]: number }; columnSizeMap?: { [key: string]: number };
columns: ReactTableColumnProps[]; columns: ReactTableColumnProps[];
data: Array<Record<string, unknown>>; data: Array<Record<string, unknown>>;
defaultPageSize?: number;
totalRecordsCount?: number;
editMode: boolean; editMode: boolean;
sortTableColumn: (columnIndex: number, asc: boolean) => void; sortTableColumn: (columnIndex: number, asc: boolean) => void;
handleResizeColumn: (columnSizeMap: { [key: string]: number }) => void; handleResizeColumn: (columnSizeMap: { [key: string]: number }) => void;
@ -116,10 +113,7 @@ export function Table(props: TableProps) {
}), }),
[columnString], [columnString],
); );
const pageCount = const pageCount = Math.ceil(props.data.length / props.pageSize);
props.defaultPageSize && props.totalRecordsCount
? Math.ceil(props.totalRecordsCount / props.defaultPageSize)
: Math.ceil(props.data.length / props.pageSize);
const currentPageIndex = props.pageNo < pageCount ? props.pageNo : 0; const currentPageIndex = props.pageNo < pageCount ? props.pageNo : 0;
const { const {
getTableBodyProps, getTableBodyProps,
@ -161,10 +155,7 @@ export function Table(props: TableProps) {
} }
let startIndex = currentPageIndex * props.pageSize; let startIndex = currentPageIndex * props.pageSize;
let endIndex = startIndex + props.pageSize; let endIndex = startIndex + props.pageSize;
if ( if (props.serverSidePaginationEnabled) {
props.serverSidePaginationEnabled ||
(props.defaultPageSize && props.totalRecordsCount)
) {
startIndex = 0; startIndex = 0;
endIndex = props.data.length; endIndex = props.data.length;
} }
@ -216,7 +207,6 @@ export function Table(props: TableProps) {
columns={tableHeadercolumns} columns={tableHeadercolumns}
compactMode={props.compactMode} compactMode={props.compactMode}
currentPageIndex={currentPageIndex} currentPageIndex={currentPageIndex}
defaultPageSize={props.defaultPageSize}
editMode={props.editMode} editMode={props.editMode}
filters={props.filters} filters={props.filters}
isVisibleCompactMode={props.isVisibleCompactMode} isVisibleCompactMode={props.isVisibleCompactMode}
@ -235,7 +225,6 @@ export function Table(props: TableProps) {
tableColumns={columns} tableColumns={columns}
tableData={props.data} tableData={props.data}
tableSizes={tableSizes} tableSizes={tableSizes}
totalRecordsCount={props.totalRecordsCount}
updateCompactMode={props.updateCompactMode} updateCompactMode={props.updateCompactMode}
updatePageNo={props.updatePageNo} updatePageNo={props.updatePageNo}
widgetName={props.widgetName} widgetName={props.widgetName}
@ -297,7 +286,7 @@ export function Table(props: TableProps) {
<div <div
{...getTableBodyProps()} {...getTableBodyProps()}
className={`tbody ${ className={`tbody ${
props.tablePageSize > subPage.length ? "no-scroll" : "" props.pageSize > subPage.length ? "no-scroll" : ""
}`} }`}
ref={tableBodyRef} ref={tableBodyRef}
> >
@ -338,9 +327,9 @@ export function Table(props: TableProps) {
</div> </div>
); );
})} })}
{props.tablePageSize > subPage.length && {props.pageSize > subPage.length &&
renderEmptyRows( renderEmptyRows(
props.tablePageSize - subPage.length, props.pageSize - subPage.length,
props.columns, props.columns,
props.width, props.width,
subPage, subPage,

View File

@ -93,8 +93,6 @@ interface TableHeaderProps {
nextPageClick: () => void; nextPageClick: () => void;
prevPageClick: () => void; prevPageClick: () => void;
pageNo: number; pageNo: number;
defaultPageSize?: number;
totalRecordsCount?: number;
tableData: Array<Record<string, unknown>>; tableData: Array<Record<string, unknown>>;
tableColumns: ReactTableColumnProps[]; tableColumns: ReactTableColumnProps[];
pageCount: number; pageCount: number;
@ -163,7 +161,7 @@ function TableHeader(props: TableHeaderProps) {
<PaginationWrapper> <PaginationWrapper>
<PaginationItemWrapper <PaginationItemWrapper
className="t--table-widget-prev-page" className="t--table-widget-prev-page"
disabled={props.pageNo === 0} disabled={false}
onClick={() => { onClick={() => {
props.prevPageClick(); props.prevPageClick();
}} }}
@ -175,7 +173,7 @@ function TableHeader(props: TableHeaderProps) {
</PaginationItemWrapper> </PaginationItemWrapper>
<PaginationItemWrapper <PaginationItemWrapper
className="t--table-widget-next-page" className="t--table-widget-next-page"
disabled={props.pageNo === props.pageCount - 1} disabled={false}
onClick={() => { onClick={() => {
props.nextPageClick(); props.nextPageClick();
}} }}
@ -187,10 +185,7 @@ function TableHeader(props: TableHeaderProps) {
{props.isVisiblePagination && !props.serverSidePaginationEnabled && ( {props.isVisiblePagination && !props.serverSidePaginationEnabled && (
<PaginationWrapper> <PaginationWrapper>
<RowWrapper className="show-page-items"> <RowWrapper className="show-page-items">
{props.totalRecordsCount {props.tableData?.length} Records
? props.totalRecordsCount
: props.tableData?.length}{" "}
Records
</RowWrapper> </RowWrapper>
<PaginationItemWrapper <PaginationItemWrapper
className="t--table-widget-prev-page" className="t--table-widget-prev-page"

View File

@ -42,9 +42,6 @@ interface ReactTableComponentProps {
width: number; width: number;
height: number; height: number;
pageSize: number; pageSize: number;
tablePageSize: number;
defaultPageSize?: number;
totalRecordsCount?: number;
tableData: Array<Record<string, unknown>>; tableData: Array<Record<string, unknown>>;
disableDrag: (disable: boolean) => void; disableDrag: (disable: boolean) => void;
onRowClick: (rowData: Record<string, unknown>, rowIndex: number) => void; onRowClick: (rowData: Record<string, unknown>, rowIndex: number) => void;
@ -82,7 +79,6 @@ function ReactTableComponent(props: ReactTableComponentProps) {
columns, columns,
columnSizeMap, columnSizeMap,
compactMode, compactMode,
defaultPageSize,
disableDrag, disableDrag,
editMode, editMode,
filters, filters,
@ -107,8 +103,6 @@ function ReactTableComponent(props: ReactTableComponentProps) {
serverSidePaginationEnabled, serverSidePaginationEnabled,
sortTableColumn: _sortTableColumn, sortTableColumn: _sortTableColumn,
tableData, tableData,
tablePageSize,
totalRecordsCount,
triggerRowSelection, triggerRowSelection,
updateCompactMode, updateCompactMode,
updatePageNo, updatePageNo,
@ -235,7 +229,6 @@ function ReactTableComponent(props: ReactTableComponentProps) {
columns={columns} columns={columns}
compactMode={compactMode} compactMode={compactMode}
data={tableData} data={tableData}
defaultPageSize={defaultPageSize}
disableDrag={() => { disableDrag={() => {
disableDrag(true); disableDrag(true);
}} }}
@ -263,8 +256,6 @@ function ReactTableComponent(props: ReactTableComponentProps) {
selectedRowIndices={selectedRowIndices} selectedRowIndices={selectedRowIndices}
serverSidePaginationEnabled={serverSidePaginationEnabled} serverSidePaginationEnabled={serverSidePaginationEnabled}
sortTableColumn={sortTableColumn} sortTableColumn={sortTableColumn}
tablePageSize={tablePageSize}
totalRecordsCount={totalRecordsCount}
triggerRowSelection={triggerRowSelection} triggerRowSelection={triggerRowSelection}
updateCompactMode={updateCompactMode} updateCompactMode={updateCompactMode}
updatePageNo={updatePageNo} updatePageNo={updatePageNo}
@ -279,7 +270,6 @@ export default React.memo(ReactTableComponent, (prev, next) => {
return ( return (
prev.applyFilter === next.applyFilter && prev.applyFilter === next.applyFilter &&
prev.compactMode === next.compactMode && prev.compactMode === next.compactMode &&
prev.defaultPageSize === next.defaultPageSize &&
prev.disableDrag === next.disableDrag && prev.disableDrag === next.disableDrag &&
prev.editMode === next.editMode && prev.editMode === next.editMode &&
prev.filters === next.filters && prev.filters === next.filters &&
@ -296,7 +286,6 @@ export default React.memo(ReactTableComponent, (prev, next) => {
prev.onRowClick === next.onRowClick && prev.onRowClick === next.onRowClick &&
prev.pageNo === next.pageNo && prev.pageNo === next.pageNo &&
prev.pageSize === next.pageSize && prev.pageSize === next.pageSize &&
prev.tablePageSize === next.tablePageSize &&
prev.prevPageClick === next.prevPageClick && prev.prevPageClick === next.prevPageClick &&
prev.searchKey === next.searchKey && prev.searchKey === next.searchKey &&
prev.searchTableData === next.searchTableData && prev.searchTableData === next.searchTableData &&
@ -304,7 +293,6 @@ export default React.memo(ReactTableComponent, (prev, next) => {
prev.selectedRowIndices === next.selectedRowIndices && prev.selectedRowIndices === next.selectedRowIndices &&
prev.serverSidePaginationEnabled === next.serverSidePaginationEnabled && prev.serverSidePaginationEnabled === next.serverSidePaginationEnabled &&
prev.sortTableColumn === next.sortTableColumn && prev.sortTableColumn === next.sortTableColumn &&
prev.totalRecordsCount === next.totalRecordsCount &&
prev.triggerRowSelection === next.triggerRowSelection && prev.triggerRowSelection === next.triggerRowSelection &&
prev.updateCompactMode === next.updateCompactMode && prev.updateCompactMode === next.updateCompactMode &&
prev.updatePageNo === next.updatePageNo && prev.updatePageNo === next.updatePageNo &&

View File

@ -116,7 +116,6 @@ describe("getAllPathsFromPropertyConfig", () => {
selectedRow: EvaluationSubstitutionType.TEMPLATE, selectedRow: EvaluationSubstitutionType.TEMPLATE,
selectedRows: EvaluationSubstitutionType.TEMPLATE, selectedRows: EvaluationSubstitutionType.TEMPLATE,
tableData: EvaluationSubstitutionType.SMART_SUBSTITUTE, tableData: EvaluationSubstitutionType.SMART_SUBSTITUTE,
defaultPageSize: EvaluationSubstitutionType.TEMPLATE,
defaultSearchText: EvaluationSubstitutionType.TEMPLATE, defaultSearchText: EvaluationSubstitutionType.TEMPLATE,
defaultSelectedRow: EvaluationSubstitutionType.TEMPLATE, defaultSelectedRow: EvaluationSubstitutionType.TEMPLATE,
isVisible: EvaluationSubstitutionType.TEMPLATE, isVisible: EvaluationSubstitutionType.TEMPLATE,
@ -155,7 +154,6 @@ describe("getAllPathsFromPropertyConfig", () => {
EvaluationSubstitutionType.TEMPLATE, EvaluationSubstitutionType.TEMPLATE,
"primaryColumns.status.buttonLabelColor": "primaryColumns.status.buttonLabelColor":
EvaluationSubstitutionType.TEMPLATE, EvaluationSubstitutionType.TEMPLATE,
totalRecordsCount: EvaluationSubstitutionType.TEMPLATE,
}, },
triggerPaths: { triggerPaths: {
onRowSelected: true, onRowSelected: true,
@ -165,12 +163,10 @@ describe("getAllPathsFromPropertyConfig", () => {
"primaryColumns.status.onClick": true, "primaryColumns.status.onClick": true,
}, },
validationPaths: { validationPaths: {
defaultPageSize: "NUMBER",
defaultSearchText: "TEXT", defaultSearchText: "TEXT",
defaultSelectedRow: "DEFAULT_SELECTED_ROW", defaultSelectedRow: "DEFAULT_SELECTED_ROW",
isVisible: "BOOLEAN", isVisible: "BOOLEAN",
tableData: "TABLE_DATA", tableData: "TABLE_DATA",
totalRecordsCount: "NUMBER",
}, },
}; };

View File

@ -76,8 +76,6 @@ export const entityDefinitions = {
pageSize: "number", pageSize: "number",
isVisible: isVisible, isVisible: isVisible,
searchText: "string", searchText: "string",
defaultPageSize: "number",
totalRecordsCount: "number",
}), }),
VIDEO_WIDGET: { VIDEO_WIDGET: {
"!doc": "!doc":

View File

@ -663,24 +663,6 @@ export default [
isTriggerProperty: false, isTriggerProperty: false,
validation: VALIDATION_TYPES.TEXT, validation: VALIDATION_TYPES.TEXT,
}, },
{
propertyName: "totalRecordsCount",
label: "Total Record Count",
controlType: "INPUT_TEXT",
placeholderText: "Enter total record count",
isBindProperty: true,
isTriggerProperty: false,
validation: VALIDATION_TYPES.NUMBER,
},
{
propertyName: "defaultPageSize",
label: "Default Page Size",
controlType: "INPUT_TEXT",
placeholderText: "Enter default page size",
isBindProperty: true,
isTriggerProperty: false,
validation: VALIDATION_TYPES.NUMBER,
},
{ {
helpText: "Selects the default selected row", helpText: "Selects the default selected row",
propertyName: "defaultSelectedRow", propertyName: "defaultSelectedRow",

View File

@ -38,6 +38,4 @@ export interface TableWidgetProps extends WidgetProps, WithMeta, TableStyles {
column: string; column: string;
asc: boolean; asc: boolean;
}; };
totalRecordCount?: number;
defaultPageSize?: number;
} }

View File

@ -538,20 +538,6 @@ class TableWidget extends BaseWidget<TableWidgetProps, WidgetState> {
if (!this.props.pageNo) this.props.updateWidgetMetaProperty("pageNo", 1); if (!this.props.pageNo) this.props.updateWidgetMetaProperty("pageNo", 1);
//update pageNo when defaultPageSize or totalRecordsCount is changed
if (
this.props.defaultPageSize &&
this.props.totalRecordCount &&
this.props.pageNo
) {
const maxAllowedPageNumber = Math.ceil(
this.props.totalRecordCount / this.props.defaultPageSize,
);
if (this.props.pageNo > maxAllowedPageNumber) {
this.props.updateWidgetMetaProperty("pageNo", maxAllowedPageNumber);
}
}
// If the user has switched the mutiple row selection feature // If the user has switched the mutiple row selection feature
if (this.props.multiRowSelection !== prevProps.multiRowSelection) { if (this.props.multiRowSelection !== prevProps.multiRowSelection) {
// It is switched ON: // It is switched ON:
@ -576,10 +562,7 @@ class TableWidget extends BaseWidget<TableWidgetProps, WidgetState> {
this.updateSelectedRowIndex(); this.updateSelectedRowIndex();
} }
if ( if (this.props.pageSize !== prevProps.pageSize) {
this.props.pageSize !== prevProps.pageSize ||
this.props.defaultPageSize !== prevProps.defaultPageSize
) {
if (this.props.onPageSizeChange) { if (this.props.onPageSizeChange) {
super.executeAction({ super.executeAction({
triggerPropertyName: "onPageSizeChange", triggerPropertyName: "onPageSizeChange",
@ -634,8 +617,7 @@ class TableWidget extends BaseWidget<TableWidgetProps, WidgetState> {
getPageView() { getPageView() {
const { const {
totalRecordsCount, pageSize,
defaultPageSize,
filteredTableData = [], filteredTableData = [],
isVisibleCompactMode, isVisibleCompactMode,
isVisibleDownload, isVisibleDownload,
@ -643,28 +625,8 @@ class TableWidget extends BaseWidget<TableWidgetProps, WidgetState> {
isVisiblePagination, isVisiblePagination,
isVisibleSearch, isVisibleSearch,
} = this.props; } = this.props;
const pageSize = defaultPageSize ? defaultPageSize : this.props.pageSize;
const tableColumns = this.getTableColumns() || []; const tableColumns = this.getTableColumns() || [];
const paginatedFilteredData = [...filteredTableData]; const transformedData = this.transformData(filteredTableData, tableColumns);
if (defaultPageSize && totalRecordsCount) {
//if total records count configured is more than tableData
if (this.props.pageNo * defaultPageSize > totalRecordsCount) {
const count =
totalRecordsCount - (this.props.pageNo - 1) * defaultPageSize;
paginatedFilteredData.splice(count, paginatedFilteredData.length);
}
// Manage defaultPageSize data
if (paginatedFilteredData.length > defaultPageSize) {
paginatedFilteredData.splice(
defaultPageSize,
paginatedFilteredData.length,
);
}
}
const transformedData = this.transformData(
paginatedFilteredData,
tableColumns,
);
const { componentHeight, componentWidth } = this.getComponentDimensions(); const { componentHeight, componentWidth } = this.getComponentDimensions();
const isVisibleHeaderOptions = const isVisibleHeaderOptions =
isVisibleCompactMode || isVisibleCompactMode ||
@ -680,7 +642,6 @@ class TableWidget extends BaseWidget<TableWidgetProps, WidgetState> {
columnSizeMap={this.props.columnSizeMap} columnSizeMap={this.props.columnSizeMap}
columns={tableColumns} columns={tableColumns}
compactMode={this.props.compactMode || CompactModeTypes.DEFAULT} compactMode={this.props.compactMode || CompactModeTypes.DEFAULT}
defaultPageSize={defaultPageSize}
disableDrag={this.toggleDrag} disableDrag={this.toggleDrag}
editMode={this.props.renderMode === RenderModes.CANVAS} editMode={this.props.renderMode === RenderModes.CANVAS}
filters={this.props.filters} filters={this.props.filters}
@ -713,8 +674,6 @@ class TableWidget extends BaseWidget<TableWidgetProps, WidgetState> {
serverSidePaginationEnabled={!!this.props.serverSidePaginationEnabled} serverSidePaginationEnabled={!!this.props.serverSidePaginationEnabled}
sortTableColumn={this.handleColumnSorting} sortTableColumn={this.handleColumnSorting}
tableData={transformedData} tableData={transformedData}
tablePageSize={Math.max(1, this.props.pageSize)}
totalRecordsCount={totalRecordsCount}
triggerRowSelection={this.props.triggerRowSelection} triggerRowSelection={this.props.triggerRowSelection}
updateCompactMode={this.handleCompactModeChange} updateCompactMode={this.handleCompactModeChange}
updatePageNo={this.updatePageNumber} updatePageNo={this.updatePageNumber}