@blaze-cms/plugin-data-ui 0.131.0-project-admin-customisations.1 → 0.131.0-project-admin-customisations.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/lib/components/ListingTable/ListingTable.js +95 -48
- package/lib/components/ListingTable/ListingTable.js.map +1 -1
- package/lib/components/ListingTable/ListingTableContent/ListingTableContent.js +0 -7
- package/lib/components/ListingTable/ListingTableContent/ListingTableContent.js.map +1 -1
- package/lib/components/ListingTable/service/index.js +73 -11
- package/lib/components/ListingTable/service/index.js.map +1 -1
- package/lib/utils/build-listing-query.js +11 -2
- package/lib/utils/build-listing-query.js.map +1 -1
- package/lib/utils/get-default-query-params.js +3 -4
- package/lib/utils/get-default-query-params.js.map +1 -1
- package/lib-es/components/ListingTable/ListingTable.js +30 -20
- package/lib-es/components/ListingTable/ListingTable.js.map +1 -1
- package/lib-es/components/ListingTable/ListingTableContent/ListingTableContent.js +0 -5
- package/lib-es/components/ListingTable/ListingTableContent/ListingTableContent.js.map +1 -1
- package/lib-es/components/ListingTable/service/index.js +65 -7
- package/lib-es/components/ListingTable/service/index.js.map +1 -1
- package/lib-es/utils/build-listing-query.js +10 -1
- package/lib-es/utils/build-listing-query.js.map +1 -1
- package/lib-es/utils/get-default-query-params.js +1 -3
- package/lib-es/utils/get-default-query-params.js.map +1 -1
- package/package.json +5 -5
- package/src/components/ListingTable/ListingTable.js +37 -19
- package/src/components/ListingTable/ListingTableContent/ListingTableContent.js +0 -5
- package/src/components/ListingTable/service/index.js +42 -5
- package/src/utils/build-listing-query.js +11 -1
- package/src/utils/get-default-query-params.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-listing-query.js","names":["_client","require","_coreErrors","_templateObject","
|
|
1
|
+
{"version":3,"file":"build-listing-query.js","names":["_client","require","_coreErrors","_adminUiUtils","_templateObject","buildAdminSearchQuery","entitySchema","_ref","_ref$listingPropertie","listingProperties","parsedProperties","concat","join","getDynamicQuery","buildListingQuery","isSearchQuery","actions","getAll","BlazeError","sortType","toUpperCase","substr","gql","_taggedTemplateLiteral2","_default","exports"],"sources":["../../src/utils/build-listing-query.js"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { BlazeError } from '@blaze-cms/core-errors';\nimport { getDynamicQuery } from '@blaze-cms/admin-ui-utils';\n\nconst buildAdminSearchQuery = entitySchema => {\n const { listingProperties = [] } = entitySchema || {};\n const parsedProperties = `id, ${listingProperties.join(' ') || 'id name'}`;\n\n return getDynamicQuery('ADMIN_SEARCH')([entitySchema], parsedProperties, true);\n};\n\nfunction buildListingQuery(entitySchema, isSearchQuery) {\n if (!entitySchema.actions || !entitySchema.actions.getAll || !entitySchema.listingProperties) {\n throw new BlazeError(\n 'Listing query requires getAll action and listingProperties from entity schema'\n );\n }\n\n if (isSearchQuery) return buildAdminSearchQuery(entitySchema);\n\n const sortType =\n entitySchema.actions.getAll[0].toUpperCase() + entitySchema.actions.getAll.substr(1);\n\n return gql`\n query ${\n entitySchema.actions.getAll\n }($where: JSON, $limit: Int, $offset:Int, $sort: [${sortType}SortItem]) {\n listingData: ${\n entitySchema.actions.getAll\n }(where: $where, limit: $limit, offset:$offset, sort:$sort){\n id,\n ${entitySchema.listingProperties.join(',\\n')}\n }\n }\n `;\n}\n\nexport default buildListingQuery;\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AAA4D,IAAAG,eAAA;AAE5D,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAGC,YAAY,EAAI;EAC5C,IAAAC,IAAA,GAAmCD,YAAY,IAAI,CAAC,CAAC;IAAAE,qBAAA,GAAAD,IAAA,CAA7CE,iBAAiB;IAAjBA,iBAAiB,GAAAD,qBAAA,cAAG,EAAE,GAAAA,qBAAA;EAC9B,IAAME,gBAAgB,UAAAC,MAAA,CAAUF,iBAAiB,CAACG,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAE;EAE1E,OAAO,IAAAC,6BAAe,EAAC,cAAc,CAAC,CAAC,CAACP,YAAY,CAAC,EAAEI,gBAAgB,EAAE,IAAI,CAAC;AAChF,CAAC;AAED,SAASI,iBAAiBA,CAACR,YAAY,EAAES,aAAa,EAAE;EACtD,IAAI,CAACT,YAAY,CAACU,OAAO,IAAI,CAACV,YAAY,CAACU,OAAO,CAACC,MAAM,IAAI,CAACX,YAAY,CAACG,iBAAiB,EAAE;IAC5F,MAAM,IAAIS,sBAAU,CAClB,+EACF,CAAC;EACH;EAEA,IAAIH,aAAa,EAAE,OAAOV,qBAAqB,CAACC,YAAY,CAAC;EAE7D,IAAMa,QAAQ,GACZb,YAAY,CAACU,OAAO,CAACC,MAAM,CAAC,CAAC,CAAC,CAACG,WAAW,CAAC,CAAC,GAAGd,YAAY,CAACU,OAAO,CAACC,MAAM,CAACI,MAAM,CAAC,CAAC,CAAC;EAEtF,WAAOC,WAAG,EAAAlB,eAAA,KAAAA,eAAA,OAAAmB,uBAAA,yOAENjB,YAAY,CAACU,OAAO,CAACC,MAAM,EACuBE,QAAQ,EAExDb,YAAY,CAACU,OAAO,CAACC,MAAM,EAGzBX,YAAY,CAACG,iBAAiB,CAACG,IAAI,CAAC,KAAK,CAAC;AAIpD;AAAC,IAAAY,QAAA,GAEcV,iBAAiB;AAAAW,OAAA,cAAAD,QAAA"}
|
|
@@ -5,11 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.getDefaultQueryParams = void 0;
|
|
8
|
-
var getDefaultQueryParams = function getDefaultQueryParams(
|
|
9
|
-
var schema = _ref.schema;
|
|
8
|
+
var getDefaultQueryParams = function getDefaultQueryParams(schema) {
|
|
10
9
|
var updated = schema.properties && schema.properties.updated;
|
|
11
|
-
var
|
|
12
|
-
where =
|
|
10
|
+
var _ref = schema.displayProperties || {},
|
|
11
|
+
where = _ref.adminDefaultListingFilter;
|
|
13
12
|
return {
|
|
14
13
|
where: where,
|
|
15
14
|
limit: 40,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-default-query-params.js","names":["getDefaultQueryParams","
|
|
1
|
+
{"version":3,"file":"get-default-query-params.js","names":["getDefaultQueryParams","schema","updated","properties","_ref","displayProperties","where","adminDefaultListingFilter","limit","offset","sort","property","direction","exports"],"sources":["../../src/utils/get-default-query-params.js"],"sourcesContent":["const getDefaultQueryParams = schema => {\n const updated = schema.properties && schema.properties.updated;\n const { adminDefaultListingFilter: where } = schema.displayProperties || {};\n\n return {\n where,\n limit: 40,\n offset: 0,\n sort: updated\n ? [\n {\n property: 'updated',\n direction: 'desc'\n }\n ]\n : []\n };\n};\n\nexport { getDefaultQueryParams };\n"],"mappings":";;;;;;;AAAA,IAAMA,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAGC,MAAM,EAAI;EACtC,IAAMC,OAAO,GAAGD,MAAM,CAACE,UAAU,IAAIF,MAAM,CAACE,UAAU,CAACD,OAAO;EAC9D,IAAAE,IAAA,GAA6CH,MAAM,CAACI,iBAAiB,IAAI,CAAC,CAAC;IAAxCC,KAAK,GAAAF,IAAA,CAAhCG,yBAAyB;EAEjC,OAAO;IACLD,KAAK,EAALA,KAAK;IACLE,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,CAAC;IACTC,IAAI,EAAER,OAAO,GACT,CACE;MACES,QAAQ,EAAE,SAAS;MACnBC,SAAS,EAAE;IACb,CAAC,CACF,GACD;EACN,CAAC;AACH,CAAC;AAACC,OAAA,CAAAb,qBAAA,GAAAA,qBAAA"}
|
|
@@ -27,10 +27,9 @@ const ListingTable = ({
|
|
|
27
27
|
});
|
|
28
28
|
const [scrollToIndex, setScrollToIndex] = useState(0);
|
|
29
29
|
const [verifiedRanges, setVerifiedRanges] = useState([]);
|
|
30
|
-
const queryParamsDefault = getDefaultQueryParams(
|
|
31
|
-
schema: entitySchema
|
|
32
|
-
});
|
|
30
|
+
const queryParamsDefault = getDefaultQueryParams(entitySchema);
|
|
33
31
|
const [queryParams, setQueryParams] = useState(queryParamsDefault);
|
|
32
|
+
const [listFilters, setListFilters] = useState([]);
|
|
34
33
|
const client = useApolloClient();
|
|
35
34
|
const {
|
|
36
35
|
addToast
|
|
@@ -38,20 +37,7 @@ const ListingTable = ({
|
|
|
38
37
|
useEffect(() => {
|
|
39
38
|
(async () => {
|
|
40
39
|
if (entitySchema.id !== previousSchema.id || previousSchema.id === null && entitySchema.id) {
|
|
41
|
-
|
|
42
|
-
client,
|
|
43
|
-
querySettings: {
|
|
44
|
-
entitySchema,
|
|
45
|
-
queryParams: queryParamsDefault
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
const populatedTable = populateRows({
|
|
49
|
-
toggleModal,
|
|
50
|
-
url: match.url,
|
|
51
|
-
entitySchema,
|
|
52
|
-
rows: data
|
|
53
|
-
});
|
|
54
|
-
setTableData(populatedTable);
|
|
40
|
+
await doQuery();
|
|
55
41
|
setPreviousSchema({
|
|
56
42
|
id: entitySchema.id
|
|
57
43
|
});
|
|
@@ -60,6 +46,27 @@ const ListingTable = ({
|
|
|
60
46
|
}, [client, entitySchema, match.url, previousSchema.id, queryParams] // eslint-disable-line react-hooks/exhaustive-deps
|
|
61
47
|
);
|
|
62
48
|
|
|
49
|
+
const doQuery = async (filters = listFilters) => {
|
|
50
|
+
const data = await fetchData({
|
|
51
|
+
client,
|
|
52
|
+
querySettings: {
|
|
53
|
+
entitySchema,
|
|
54
|
+
queryParams: queryParamsDefault
|
|
55
|
+
},
|
|
56
|
+
listFilters: filters
|
|
57
|
+
});
|
|
58
|
+
const populatedTable = populateRows({
|
|
59
|
+
toggleModal,
|
|
60
|
+
url: match.url,
|
|
61
|
+
entitySchema,
|
|
62
|
+
rows: data
|
|
63
|
+
});
|
|
64
|
+
setTableData(populatedTable);
|
|
65
|
+
};
|
|
66
|
+
const updateListingFilters = async filters => {
|
|
67
|
+
await doQuery(filters);
|
|
68
|
+
setListFilters(filters);
|
|
69
|
+
};
|
|
63
70
|
const onCloseCardPrompt = () => null;
|
|
64
71
|
const toggleModal = item => {
|
|
65
72
|
setModalStatus(!!item);
|
|
@@ -97,7 +104,8 @@ const ListingTable = ({
|
|
|
97
104
|
querySettings: {
|
|
98
105
|
entitySchema,
|
|
99
106
|
queryParams: sortQueryParams
|
|
100
|
-
}
|
|
107
|
+
},
|
|
108
|
+
listFilters
|
|
101
109
|
});
|
|
102
110
|
const {
|
|
103
111
|
columns,
|
|
@@ -132,7 +140,8 @@ const ListingTable = ({
|
|
|
132
140
|
querySettings: {
|
|
133
141
|
entitySchema,
|
|
134
142
|
queryParams: updatedQueryParams
|
|
135
|
-
}
|
|
143
|
+
},
|
|
144
|
+
listFilters
|
|
136
145
|
});
|
|
137
146
|
const updatedRows = [...tableData.rows, ...formatRows({
|
|
138
147
|
rows: getParsedRowData(data),
|
|
@@ -171,7 +180,8 @@ const ListingTable = ({
|
|
|
171
180
|
isMoreMenu: true
|
|
172
181
|
}))))), /*#__PURE__*/React.createElement(RenderHook, {
|
|
173
182
|
hookKey: "entity:listing:main:top",
|
|
174
|
-
schema: entitySchema
|
|
183
|
+
schema: entitySchema,
|
|
184
|
+
setListFilters: updateListingFilters
|
|
175
185
|
}), /*#__PURE__*/React.createElement(ListingTableContent, {
|
|
176
186
|
overScanBuffer: OVER_SCAN_BUFFER,
|
|
177
187
|
onSort: handleSort,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListingTable.js","names":["useApolloClient","React","useEffect","useState","Fragment","PropTypes","withRouter","Link","More","PageHeader","DeleteAction","useToasts","RenderHook","ListingTableContent","availableActions","fetchData","populateRows","formatRows","getParsedRowData","getDefaultQueryParams","OVER_SCAN_BUFFER","ListingTable","match","entitySchema","tableData","setTableData","modalStatus","setModalStatus","itemToDelete","setItemToDelete","previousSchema","setPreviousSchema","id","scrollToIndex","setScrollToIndex","verifiedRanges","setVerifiedRanges","queryParamsDefault","schema","queryParams","setQueryParams","client","addToast","data","querySettings","populatedTable","toggleModal","url","rows","onCloseCardPrompt","item","deleteAction","delete","submit","parsedFormValues","updatedTableData","_objectSpread","filter","handleSort","event","property","direction","Object","entries","sortQueryParams","sort","columns","isEnquiry","firstColumn","appliedSort","handleRenderedItems","params","startIndex","rowsLength","length","loadIndex","Math","floor","includes","updatedQueryParams","offset","updatedRows","showAddButton","createElement","className","onClose","itemName","name","title","displayName","subtitle","to","Actions","Avatar","isMoreMenu","Content","hookKey","overScanBuffer","onSort","onRenderItems","propTypes","object","isRequired"],"sources":["../../../src/components/ListingTable/ListingTable.js"],"sourcesContent":["import { useApolloClient } from '@apollo/client';\nimport React, { useEffect, useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter, Link } from 'react-router-dom';\nimport More from '@blaze-react/more';\nimport { PageHeader, DeleteAction } from '@blaze-cms/admin';\nimport { useToasts } from '@blaze-react/toaster';\nimport { RenderHook } from '@blaze-cms/plugin-render-hooks-ui';\nimport ListingTableContent from './ListingTableContent';\nimport availableActions from '../EntityManager/Entity/actions-handlers';\nimport { fetchData } from './service';\nimport { populateRows, formatRows, getParsedRowData } from './mappers/populate-rows';\nimport { getDefaultQueryParams } from '../../utils/get-default-query-params';\n\nconst OVER_SCAN_BUFFER = 10;\n\nconst ListingTable = ({ match, entitySchema }) => {\n const [tableData, setTableData] = useState({});\n const [modalStatus, setModalStatus] = useState(false);\n const [itemToDelete, setItemToDelete] = useState({});\n const [previousSchema, setPreviousSchema] = useState({ id: null });\n const [scrollToIndex, setScrollToIndex] = useState(0);\n const [verifiedRanges, setVerifiedRanges] = useState([]);\n const queryParamsDefault = getDefaultQueryParams({ schema: entitySchema });\n const [queryParams, setQueryParams] = useState(queryParamsDefault);\n const client = useApolloClient();\n const { addToast } = useToasts();\n\n useEffect(\n () => {\n (async () => {\n if (\n entitySchema.id !== previousSchema.id ||\n (previousSchema.id === null && entitySchema.id)\n ) {\n const data = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: queryParamsDefault\n }\n });\n const populatedTable = populateRows({\n toggleModal,\n url: match.url,\n entitySchema,\n rows: data\n });\n\n setTableData(populatedTable);\n setPreviousSchema({ id: entitySchema.id });\n }\n })();\n },\n [client, entitySchema, match.url, previousSchema.id, queryParams] // eslint-disable-line react-hooks/exhaustive-deps\n );\n\n const onCloseCardPrompt = () => null;\n\n const toggleModal = item => {\n setModalStatus(!!item);\n setItemToDelete(item || {});\n };\n\n const deleteAction = async () => {\n await availableActions.delete.submit(\n {\n entitySchema,\n parsedFormValues: { id: itemToDelete.id },\n client\n },\n addToast\n );\n\n toggleModal();\n\n const updatedTableData = {\n ...tableData,\n rows: tableData.rows.filter(({ id }) => id !== itemToDelete.id)\n };\n\n setTableData(updatedTableData);\n };\n\n const handleSort = async event => {\n const [[property, direction]] = Object.entries(event);\n const sortQueryParams = {\n ...queryParamsDefault,\n sort: [{ property, direction }]\n };\n setScrollToIndex(0);\n setVerifiedRanges([]);\n setQueryParams(sortQueryParams);\n\n const data = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: sortQueryParams\n }\n });\n const { columns, isEnquiry } = tableData;\n const [firstColumn] = columns;\n\n setTableData({\n ...tableData,\n appliedSort: { [property]: direction },\n rows: formatRows({\n rows: getParsedRowData(data),\n url: match.url,\n toggleModal,\n firstColumn,\n isEnquiry\n })\n });\n };\n\n const handleRenderedItems = async params => {\n const { startIndex } = params;\n const rowsLength = tableData.rows.length;\n const loadIndex = Math.floor(rowsLength / 3) - OVER_SCAN_BUFFER;\n if (loadIndex > 0 && loadIndex < startIndex && !verifiedRanges.includes(loadIndex)) {\n const updatedQueryParams = {\n ...queryParams,\n offset: rowsLength\n };\n const data = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: updatedQueryParams\n }\n });\n const updatedRows = [\n ...tableData.rows,\n ...formatRows({\n rows: getParsedRowData(data),\n url: match.url,\n toggleModal,\n isEnquiry: tableData.isEnquiry\n })\n ];\n\n setVerifiedRanges([...verifiedRanges, loadIndex]);\n setQueryParams(updatedQueryParams);\n setTableData({\n ...tableData,\n rows: updatedRows\n });\n setScrollToIndex(startIndex + OVER_SCAN_BUFFER);\n }\n };\n\n if (!tableData || !tableData.rows) return 'loading';\n const showAddButton = !!tableData.rows.length && !tableData.isEnquiry;\n\n return (\n <div className=\"page\">\n {modalStatus && (\n <DeleteAction\n onClose={toggleModal}\n deleteAction={deleteAction}\n itemName={itemToDelete.name}\n />\n )}\n <PageHeader title={entitySchema.displayName} subtitle=\"\">\n {showAddButton && (\n <Fragment>\n <Link\n data-testid=\"addEntity\"\n className=\"button button--small\"\n to={`${match.url}/create`}>\n Add\n </Link>\n <PageHeader.Actions>\n <More>\n <More.Avatar isMoreMenu>\n <span className=\"material-icons\">more_vert</span>\n </More.Avatar>\n <More.Content isMoreMenu />\n </More>\n </PageHeader.Actions>\n </Fragment>\n )}\n </PageHeader>\n <RenderHook hookKey=\"entity:listing:main:top\" schema={entitySchema} />\n <ListingTableContent\n overScanBuffer={OVER_SCAN_BUFFER}\n onSort={handleSort}\n onRenderItems={handleRenderedItems}\n tableData={tableData}\n onCloseCardPrompt={onCloseCardPrompt}\n scrollToIndex={scrollToIndex}\n />\n </div>\n );\n};\nListingTable.propTypes = {\n entitySchema: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired\n};\n\nexport default withRouter(ListingTable);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListingTable.js","names":["useApolloClient","React","useEffect","useState","Fragment","PropTypes","withRouter","Link","More","PageHeader","DeleteAction","useToasts","RenderHook","ListingTableContent","availableActions","fetchData","populateRows","formatRows","getParsedRowData","getDefaultQueryParams","OVER_SCAN_BUFFER","ListingTable","match","entitySchema","tableData","setTableData","modalStatus","setModalStatus","itemToDelete","setItemToDelete","previousSchema","setPreviousSchema","id","scrollToIndex","setScrollToIndex","verifiedRanges","setVerifiedRanges","queryParamsDefault","queryParams","setQueryParams","listFilters","setListFilters","client","addToast","doQuery","url","filters","data","querySettings","populatedTable","toggleModal","rows","updateListingFilters","onCloseCardPrompt","item","deleteAction","delete","submit","parsedFormValues","updatedTableData","_objectSpread","filter","handleSort","event","property","direction","Object","entries","sortQueryParams","sort","columns","isEnquiry","firstColumn","appliedSort","handleRenderedItems","params","startIndex","rowsLength","length","loadIndex","Math","floor","includes","updatedQueryParams","offset","updatedRows","showAddButton","createElement","className","onClose","itemName","name","title","displayName","subtitle","to","Actions","Avatar","isMoreMenu","Content","hookKey","schema","overScanBuffer","onSort","onRenderItems","propTypes","object","isRequired"],"sources":["../../../src/components/ListingTable/ListingTable.js"],"sourcesContent":["import { useApolloClient } from '@apollo/client';\nimport React, { useEffect, useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter, Link } from 'react-router-dom';\nimport More from '@blaze-react/more';\nimport { PageHeader, DeleteAction } from '@blaze-cms/admin';\nimport { useToasts } from '@blaze-react/toaster';\nimport { RenderHook } from '@blaze-cms/plugin-render-hooks-ui';\nimport ListingTableContent from './ListingTableContent';\nimport availableActions from '../EntityManager/Entity/actions-handlers';\nimport { fetchData } from './service';\nimport { populateRows, formatRows, getParsedRowData } from './mappers/populate-rows';\nimport { getDefaultQueryParams } from '../../utils/get-default-query-params';\n\nconst OVER_SCAN_BUFFER = 10;\n\nconst ListingTable = ({ match, entitySchema }) => {\n const [tableData, setTableData] = useState({});\n const [modalStatus, setModalStatus] = useState(false);\n const [itemToDelete, setItemToDelete] = useState({});\n const [previousSchema, setPreviousSchema] = useState({ id: null });\n const [scrollToIndex, setScrollToIndex] = useState(0);\n const [verifiedRanges, setVerifiedRanges] = useState([]);\n const queryParamsDefault = getDefaultQueryParams(entitySchema);\n const [queryParams, setQueryParams] = useState(queryParamsDefault);\n const [listFilters, setListFilters] = useState([]);\n const client = useApolloClient();\n const { addToast } = useToasts();\n\n useEffect(\n () => {\n (async () => {\n if (\n entitySchema.id !== previousSchema.id ||\n (previousSchema.id === null && entitySchema.id)\n ) {\n await doQuery();\n setPreviousSchema({ id: entitySchema.id });\n }\n })();\n },\n [client, entitySchema, match.url, previousSchema.id, queryParams] // eslint-disable-line react-hooks/exhaustive-deps\n );\n\n const doQuery = async (filters = listFilters) => {\n const data = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: queryParamsDefault\n },\n listFilters: filters\n });\n\n const populatedTable = populateRows({\n toggleModal,\n url: match.url,\n entitySchema,\n rows: data\n });\n\n setTableData(populatedTable);\n };\n\n const updateListingFilters = async filters => {\n await doQuery(filters);\n setListFilters(filters);\n };\n\n const onCloseCardPrompt = () => null;\n\n const toggleModal = item => {\n setModalStatus(!!item);\n setItemToDelete(item || {});\n };\n\n const deleteAction = async () => {\n await availableActions.delete.submit(\n {\n entitySchema,\n parsedFormValues: { id: itemToDelete.id },\n client\n },\n addToast\n );\n\n toggleModal();\n\n const updatedTableData = {\n ...tableData,\n rows: tableData.rows.filter(({ id }) => id !== itemToDelete.id)\n };\n\n setTableData(updatedTableData);\n };\n\n const handleSort = async event => {\n const [[property, direction]] = Object.entries(event);\n const sortQueryParams = {\n ...queryParamsDefault,\n sort: [{ property, direction }]\n };\n setScrollToIndex(0);\n setVerifiedRanges([]);\n setQueryParams(sortQueryParams);\n\n const data = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: sortQueryParams\n },\n listFilters\n });\n const { columns, isEnquiry } = tableData;\n const [firstColumn] = columns;\n\n setTableData({\n ...tableData,\n appliedSort: { [property]: direction },\n rows: formatRows({\n rows: getParsedRowData(data),\n url: match.url,\n toggleModal,\n firstColumn,\n isEnquiry\n })\n });\n };\n\n const handleRenderedItems = async params => {\n const { startIndex } = params;\n const rowsLength = tableData.rows.length;\n const loadIndex = Math.floor(rowsLength / 3) - OVER_SCAN_BUFFER;\n if (loadIndex > 0 && loadIndex < startIndex && !verifiedRanges.includes(loadIndex)) {\n const updatedQueryParams = {\n ...queryParams,\n offset: rowsLength\n };\n const data = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: updatedQueryParams\n },\n listFilters\n });\n const updatedRows = [\n ...tableData.rows,\n ...formatRows({\n rows: getParsedRowData(data),\n url: match.url,\n toggleModal,\n isEnquiry: tableData.isEnquiry\n })\n ];\n\n setVerifiedRanges([...verifiedRanges, loadIndex]);\n setQueryParams(updatedQueryParams);\n setTableData({\n ...tableData,\n rows: updatedRows\n });\n setScrollToIndex(startIndex + OVER_SCAN_BUFFER);\n }\n };\n\n if (!tableData || !tableData.rows) return 'loading';\n const showAddButton = !!tableData.rows.length && !tableData.isEnquiry;\n\n return (\n <div className=\"page\">\n {modalStatus && (\n <DeleteAction\n onClose={toggleModal}\n deleteAction={deleteAction}\n itemName={itemToDelete.name}\n />\n )}\n <PageHeader title={entitySchema.displayName} subtitle=\"\">\n {showAddButton && (\n <Fragment>\n <Link\n data-testid=\"addEntity\"\n className=\"button button--small\"\n to={`${match.url}/create`}>\n Add\n </Link>\n <PageHeader.Actions>\n <More>\n <More.Avatar isMoreMenu>\n <span className=\"material-icons\">more_vert</span>\n </More.Avatar>\n <More.Content isMoreMenu />\n </More>\n </PageHeader.Actions>\n </Fragment>\n )}\n </PageHeader>\n <RenderHook\n hookKey=\"entity:listing:main:top\"\n schema={entitySchema}\n setListFilters={updateListingFilters}\n />\n <ListingTableContent\n overScanBuffer={OVER_SCAN_BUFFER}\n onSort={handleSort}\n onRenderItems={handleRenderedItems}\n tableData={tableData}\n onCloseCardPrompt={onCloseCardPrompt}\n scrollToIndex={scrollToIndex}\n />\n </div>\n );\n};\nListingTable.propTypes = {\n entitySchema: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired\n};\n\nexport default withRouter(ListingTable);\n"],"mappings":"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"}
|
|
@@ -5,9 +5,6 @@ import { withRouter } from 'react-router-dom';
|
|
|
5
5
|
const ListingTableContent = ({
|
|
6
6
|
tableData,
|
|
7
7
|
handleSelect,
|
|
8
|
-
onCloseCardPrompt,
|
|
9
|
-
selectedMenuItem,
|
|
10
|
-
match,
|
|
11
8
|
onSort,
|
|
12
9
|
onClickRow,
|
|
13
10
|
overScanBuffer,
|
|
@@ -35,8 +32,6 @@ const ListingTableContent = ({
|
|
|
35
32
|
};
|
|
36
33
|
ListingTableContent.propTypes = {
|
|
37
34
|
tableData: PropTypes.object.isRequired,
|
|
38
|
-
onCloseCardPrompt: PropTypes.func.isRequired,
|
|
39
|
-
selectedMenuItem: PropTypes.object,
|
|
40
35
|
match: PropTypes.shape({
|
|
41
36
|
url: PropTypes.string
|
|
42
37
|
}).isRequired,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListingTableContent.js","names":["React","Table","PropTypes","withRouter","ListingTableContent","tableData","handleSelect","
|
|
1
|
+
{"version":3,"file":"ListingTableContent.js","names":["React","Table","PropTypes","withRouter","ListingTableContent","tableData","handleSelect","onSort","onClickRow","overScanBuffer","onRenderItems","scrollToIndex","displayTable","rows","length","isEnquiry","className","createElement","Fragment","data","checkboxes","onSelect","propTypes","object","isRequired","match","shape","url","string","func","number","defaultProps","selectedMenuItem"],"sources":["../../../../src/components/ListingTable/ListingTableContent/ListingTableContent.js"],"sourcesContent":["import React from 'react';\nimport Table from '@blaze-react/table';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\n\nconst ListingTableContent = ({\n tableData,\n handleSelect,\n onSort,\n onClickRow,\n overScanBuffer,\n onRenderItems,\n scrollToIndex\n}) => {\n const displayTable = tableData && tableData.rows && !!tableData.rows.length;\n const { isEnquiry } = tableData;\n const className = `page__content${isEnquiry ? ' array-table' : ''}`;\n\n return (\n <>\n {displayTable && (\n <>\n <div className={className}>\n <Table\n scrollToIndex={scrollToIndex}\n onSort={onSort}\n onClickRow={onClickRow}\n overScanBuffer={overScanBuffer}\n onRenderItems={onRenderItems}\n data={tableData}\n checkboxes={!isEnquiry}\n onSelect={handleSelect}\n data-testid=\"listing-table-content\"\n />\n </div>\n </>\n )}\n </>\n );\n};\n\nListingTableContent.propTypes = {\n tableData: PropTypes.object.isRequired,\n match: PropTypes.shape({\n url: PropTypes.string\n }).isRequired,\n handleSelect: PropTypes.func,\n onSort: PropTypes.func,\n onClickRow: PropTypes.func,\n overScanBuffer: PropTypes.number,\n scrollToIndex: PropTypes.number,\n onRenderItems: PropTypes.func\n};\n\nListingTableContent.defaultProps = {\n handleSelect: () => {},\n onSort: () => {},\n onClickRow: () => {},\n overScanBuffer: 0,\n scrollToIndex: 0,\n onRenderItems: () => {},\n selectedMenuItem: null\n};\n\nexport default withRouter(ListingTableContent);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,KAAK,MAAM,oBAAoB;AACtC,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,UAAU,QAAQ,kBAAkB;AAE7C,MAAMC,mBAAmB,GAAGA,CAAC;EAC3BC,SAAS;EACTC,YAAY;EACZC,MAAM;EACNC,UAAU;EACVC,cAAc;EACdC,aAAa;EACbC;AACF,CAAC,KAAK;EACJ,MAAMC,YAAY,GAAGP,SAAS,IAAIA,SAAS,CAACQ,IAAI,IAAI,CAAC,CAACR,SAAS,CAACQ,IAAI,CAACC,MAAM;EAC3E,MAAM;IAAEC;EAAU,CAAC,GAAGV,SAAS;EAC/B,MAAMW,SAAS,GAAI,gBAAeD,SAAS,GAAG,cAAc,GAAG,EAAG,EAAC;EAEnE,oBACEf,KAAA,CAAAiB,aAAA,CAAAjB,KAAA,CAAAkB,QAAA,QACGN,YAAY,iBACXZ,KAAA,CAAAiB,aAAA,CAAAjB,KAAA,CAAAkB,QAAA,qBACElB,KAAA,CAAAiB,aAAA;IAAKD,SAAS,EAAEA;EAAU,gBACxBhB,KAAA,CAAAiB,aAAA,CAAChB,KAAK;IACJU,aAAa,EAAEA,aAAc;IAC7BJ,MAAM,EAAEA,MAAO;IACfC,UAAU,EAAEA,UAAW;IACvBC,cAAc,EAAEA,cAAe;IAC/BC,aAAa,EAAEA,aAAc;IAC7BS,IAAI,EAAEd,SAAU;IAChBe,UAAU,EAAE,CAACL,SAAU;IACvBM,QAAQ,EAAEf,YAAa;IACvB,eAAY;EAAuB,CACpC,CACE,CACL,CAEJ,CAAC;AAEP,CAAC;AAEDF,mBAAmB,CAACkB,SAAS,GAAG;EAC9BjB,SAAS,EAAEH,SAAS,CAACqB,MAAM,CAACC,UAAU;EACtCC,KAAK,EAAEvB,SAAS,CAACwB,KAAK,CAAC;IACrBC,GAAG,EAAEzB,SAAS,CAAC0B;EACjB,CAAC,CAAC,CAACJ,UAAU;EACblB,YAAY,EAAEJ,SAAS,CAAC2B,IAAI;EAC5BtB,MAAM,EAAEL,SAAS,CAAC2B,IAAI;EACtBrB,UAAU,EAAEN,SAAS,CAAC2B,IAAI;EAC1BpB,cAAc,EAAEP,SAAS,CAAC4B,MAAM;EAChCnB,aAAa,EAAET,SAAS,CAAC4B,MAAM;EAC/BpB,aAAa,EAAER,SAAS,CAAC2B;AAC3B,CAAC;AAEDzB,mBAAmB,CAAC2B,YAAY,GAAG;EACjCzB,YAAY,EAAEA,CAAA,KAAM,CAAC,CAAC;EACtBC,MAAM,EAAEA,CAAA,KAAM,CAAC,CAAC;EAChBC,UAAU,EAAEA,CAAA,KAAM,CAAC,CAAC;EACpBC,cAAc,EAAE,CAAC;EACjBE,aAAa,EAAE,CAAC;EAChBD,aAAa,EAAEA,CAAA,KAAM,CAAC,CAAC;EACvBsB,gBAAgB,EAAE;AACpB,CAAC;AAED,eAAe7B,UAAU,CAACC,mBAAmB,CAAC"}
|
|
@@ -1,22 +1,80 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
1
4
|
import buildListingQuery from '../../../utils/build-listing-query';
|
|
5
|
+
function buildVariables({
|
|
6
|
+
entitySchema,
|
|
7
|
+
isSearchQuery,
|
|
8
|
+
listFilters = [],
|
|
9
|
+
queryParams = {}
|
|
10
|
+
}) {
|
|
11
|
+
const {
|
|
12
|
+
identifier
|
|
13
|
+
} = entitySchema;
|
|
14
|
+
const {
|
|
15
|
+
sort,
|
|
16
|
+
offset,
|
|
17
|
+
limit,
|
|
18
|
+
where
|
|
19
|
+
} = queryParams;
|
|
20
|
+
const [{
|
|
21
|
+
property,
|
|
22
|
+
direction
|
|
23
|
+
}] = sort;
|
|
24
|
+
const parsedOffset = `${property}:${direction}`;
|
|
25
|
+
if (!isSearchQuery) return _objectSpread(_objectSpread({}, queryParams), {}, {
|
|
26
|
+
where: !Array.isArray(listFilters) ? listFilters : where
|
|
27
|
+
});
|
|
28
|
+
const rawQuery = {
|
|
29
|
+
bool: {
|
|
30
|
+
must: listFilters || [],
|
|
31
|
+
filter: [{
|
|
32
|
+
term: {
|
|
33
|
+
entityIdentifier: identifier
|
|
34
|
+
}
|
|
35
|
+
}]
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
limit,
|
|
40
|
+
offset,
|
|
41
|
+
sort: parsedOffset,
|
|
42
|
+
where: JSON.stringify(rawQuery)
|
|
43
|
+
};
|
|
44
|
+
}
|
|
2
45
|
const fetchData = async ({
|
|
3
46
|
client,
|
|
4
47
|
querySettings: {
|
|
5
48
|
entitySchema,
|
|
6
49
|
queryParams
|
|
7
|
-
}
|
|
50
|
+
},
|
|
51
|
+
listFilters
|
|
8
52
|
}) => {
|
|
9
|
-
const query = buildListingQuery(entitySchema);
|
|
10
53
|
const {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
54
|
+
displayProperties: {
|
|
55
|
+
adminListings: {
|
|
56
|
+
dataSource: {
|
|
57
|
+
source
|
|
58
|
+
} = {}
|
|
59
|
+
} = {}
|
|
60
|
+
} = {}
|
|
61
|
+
} = entitySchema;
|
|
62
|
+
const isSearchQuery = source === 'search';
|
|
63
|
+
const query = buildListingQuery(entitySchema, isSearchQuery);
|
|
64
|
+
const variables = buildVariables({
|
|
65
|
+
entitySchema,
|
|
66
|
+
listFilters,
|
|
67
|
+
queryParams,
|
|
68
|
+
isSearchQuery
|
|
69
|
+
});
|
|
70
|
+
const {
|
|
71
|
+
data = {}
|
|
14
72
|
} = await client.query({
|
|
15
73
|
query,
|
|
16
|
-
variables
|
|
74
|
+
variables,
|
|
17
75
|
fetchPolicy: 'network-only'
|
|
18
76
|
});
|
|
19
|
-
return listingData;
|
|
77
|
+
return data.searchResults ? data.searchResults.results : data.listingData;
|
|
20
78
|
};
|
|
21
79
|
export { fetchData };
|
|
22
80
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["buildListingQuery","fetchData","client","querySettings","
|
|
1
|
+
{"version":3,"file":"index.js","names":["buildListingQuery","buildVariables","entitySchema","isSearchQuery","listFilters","queryParams","identifier","sort","offset","limit","where","property","direction","parsedOffset","_objectSpread","Array","isArray","rawQuery","bool","must","filter","term","entityIdentifier","JSON","stringify","fetchData","client","querySettings","displayProperties","adminListings","dataSource","source","query","variables","data","fetchPolicy","searchResults","results","listingData"],"sources":["../../../../src/components/ListingTable/service/index.js"],"sourcesContent":["import buildListingQuery from '../../../utils/build-listing-query';\n\nfunction buildVariables({ entitySchema, isSearchQuery, listFilters = [], queryParams = {} }) {\n const { identifier } = entitySchema;\n const { sort, offset, limit, where } = queryParams;\n const [{ property, direction }] = sort;\n const parsedOffset = `${property}:${direction}`;\n\n if (!isSearchQuery)\n return {\n ...queryParams,\n where: !Array.isArray(listFilters) ? listFilters : where\n };\n\n const rawQuery = {\n bool: {\n must: listFilters || [],\n filter: [\n {\n term: {\n entityIdentifier: identifier\n }\n }\n ]\n }\n };\n\n return {\n limit,\n offset,\n sort: parsedOffset,\n where: JSON.stringify(rawQuery)\n };\n}\n\nconst fetchData = async ({ client, querySettings: { entitySchema, queryParams }, listFilters }) => {\n const {\n displayProperties: { adminListings: { dataSource: { source } = {} } = {} } = {}\n } = entitySchema;\n\n const isSearchQuery = source === 'search';\n const query = buildListingQuery(entitySchema, isSearchQuery);\n const variables = buildVariables({ entitySchema, listFilters, queryParams, isSearchQuery });\n const { data = {} } = await client.query({ query, variables, fetchPolicy: 'network-only' });\n\n return data.searchResults ? data.searchResults.results : data.listingData;\n};\n\nexport { fetchData };\n"],"mappings":";;;AAAA,OAAOA,iBAAiB,MAAM,oCAAoC;AAElE,SAASC,cAAcA,CAAC;EAAEC,YAAY;EAAEC,aAAa;EAAEC,WAAW,GAAG,EAAE;EAAEC,WAAW,GAAG,CAAC;AAAE,CAAC,EAAE;EAC3F,MAAM;IAAEC;EAAW,CAAC,GAAGJ,YAAY;EACnC,MAAM;IAAEK,IAAI;IAAEC,MAAM;IAAEC,KAAK;IAAEC;EAAM,CAAC,GAAGL,WAAW;EAClD,MAAM,CAAC;IAAEM,QAAQ;IAAEC;EAAU,CAAC,CAAC,GAAGL,IAAI;EACtC,MAAMM,YAAY,GAAI,GAAEF,QAAS,IAAGC,SAAU,EAAC;EAE/C,IAAI,CAACT,aAAa,EAChB,OAAAW,aAAA,CAAAA,aAAA,KACKT,WAAW;IACdK,KAAK,EAAE,CAACK,KAAK,CAACC,OAAO,CAACZ,WAAW,CAAC,GAAGA,WAAW,GAAGM;EAAK;EAG5D,MAAMO,QAAQ,GAAG;IACfC,IAAI,EAAE;MACJC,IAAI,EAAEf,WAAW,IAAI,EAAE;MACvBgB,MAAM,EAAE,CACN;QACEC,IAAI,EAAE;UACJC,gBAAgB,EAAEhB;QACpB;MACF,CAAC;IAEL;EACF,CAAC;EAED,OAAO;IACLG,KAAK;IACLD,MAAM;IACND,IAAI,EAAEM,YAAY;IAClBH,KAAK,EAAEa,IAAI,CAACC,SAAS,CAACP,QAAQ;EAChC,CAAC;AACH;AAEA,MAAMQ,SAAS,GAAG,MAAAA,CAAO;EAAEC,MAAM;EAAEC,aAAa,EAAE;IAAEzB,YAAY;IAAEG;EAAY,CAAC;EAAED;AAAY,CAAC,KAAK;EACjG,MAAM;IACJwB,iBAAiB,EAAE;MAAEC,aAAa,EAAE;QAAEC,UAAU,EAAE;UAAEC;QAAO,CAAC,GAAG,CAAC;MAAE,CAAC,GAAG,CAAC;IAAE,CAAC,GAAG,CAAC;EAChF,CAAC,GAAG7B,YAAY;EAEhB,MAAMC,aAAa,GAAG4B,MAAM,KAAK,QAAQ;EACzC,MAAMC,KAAK,GAAGhC,iBAAiB,CAACE,YAAY,EAAEC,aAAa,CAAC;EAC5D,MAAM8B,SAAS,GAAGhC,cAAc,CAAC;IAAEC,YAAY;IAAEE,WAAW;IAAEC,WAAW;IAAEF;EAAc,CAAC,CAAC;EAC3F,MAAM;IAAE+B,IAAI,GAAG,CAAC;EAAE,CAAC,GAAG,MAAMR,MAAM,CAACM,KAAK,CAAC;IAAEA,KAAK;IAAEC,SAAS;IAAEE,WAAW,EAAE;EAAe,CAAC,CAAC;EAE3F,OAAOD,IAAI,CAACE,aAAa,GAAGF,IAAI,CAACE,aAAa,CAACC,OAAO,GAAGH,IAAI,CAACI,WAAW;AAC3E,CAAC;AAED,SAASb,SAAS"}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import { gql } from '@apollo/client';
|
|
2
2
|
import { BlazeError } from '@blaze-cms/core-errors';
|
|
3
|
-
|
|
3
|
+
import { getDynamicQuery } from '@blaze-cms/admin-ui-utils';
|
|
4
|
+
const buildAdminSearchQuery = entitySchema => {
|
|
5
|
+
const {
|
|
6
|
+
listingProperties = []
|
|
7
|
+
} = entitySchema || {};
|
|
8
|
+
const parsedProperties = `id, ${listingProperties.join(' ') || 'id name'}`;
|
|
9
|
+
return getDynamicQuery('ADMIN_SEARCH')([entitySchema], parsedProperties, true);
|
|
10
|
+
};
|
|
11
|
+
function buildListingQuery(entitySchema, isSearchQuery) {
|
|
4
12
|
if (!entitySchema.actions || !entitySchema.actions.getAll || !entitySchema.listingProperties) {
|
|
5
13
|
throw new BlazeError('Listing query requires getAll action and listingProperties from entity schema');
|
|
6
14
|
}
|
|
15
|
+
if (isSearchQuery) return buildAdminSearchQuery(entitySchema);
|
|
7
16
|
const sortType = entitySchema.actions.getAll[0].toUpperCase() + entitySchema.actions.getAll.substr(1);
|
|
8
17
|
return gql`
|
|
9
18
|
query ${entitySchema.actions.getAll}($where: JSON, $limit: Int, $offset:Int, $sort: [${sortType}SortItem]) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-listing-query.js","names":["gql","BlazeError","
|
|
1
|
+
{"version":3,"file":"build-listing-query.js","names":["gql","BlazeError","getDynamicQuery","buildAdminSearchQuery","entitySchema","listingProperties","parsedProperties","join","buildListingQuery","isSearchQuery","actions","getAll","sortType","toUpperCase","substr"],"sources":["../../src/utils/build-listing-query.js"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { BlazeError } from '@blaze-cms/core-errors';\nimport { getDynamicQuery } from '@blaze-cms/admin-ui-utils';\n\nconst buildAdminSearchQuery = entitySchema => {\n const { listingProperties = [] } = entitySchema || {};\n const parsedProperties = `id, ${listingProperties.join(' ') || 'id name'}`;\n\n return getDynamicQuery('ADMIN_SEARCH')([entitySchema], parsedProperties, true);\n};\n\nfunction buildListingQuery(entitySchema, isSearchQuery) {\n if (!entitySchema.actions || !entitySchema.actions.getAll || !entitySchema.listingProperties) {\n throw new BlazeError(\n 'Listing query requires getAll action and listingProperties from entity schema'\n );\n }\n\n if (isSearchQuery) return buildAdminSearchQuery(entitySchema);\n\n const sortType =\n entitySchema.actions.getAll[0].toUpperCase() + entitySchema.actions.getAll.substr(1);\n\n return gql`\n query ${\n entitySchema.actions.getAll\n }($where: JSON, $limit: Int, $offset:Int, $sort: [${sortType}SortItem]) {\n listingData: ${\n entitySchema.actions.getAll\n }(where: $where, limit: $limit, offset:$offset, sort:$sort){\n id,\n ${entitySchema.listingProperties.join(',\\n')}\n }\n }\n `;\n}\n\nexport default buildListingQuery;\n"],"mappings":"AAAA,SAASA,GAAG,QAAQ,gBAAgB;AACpC,SAASC,UAAU,QAAQ,wBAAwB;AACnD,SAASC,eAAe,QAAQ,2BAA2B;AAE3D,MAAMC,qBAAqB,GAAGC,YAAY,IAAI;EAC5C,MAAM;IAAEC,iBAAiB,GAAG;EAAG,CAAC,GAAGD,YAAY,IAAI,CAAC,CAAC;EACrD,MAAME,gBAAgB,GAAI,OAAMD,iBAAiB,CAACE,IAAI,CAAC,GAAG,CAAC,IAAI,SAAU,EAAC;EAE1E,OAAOL,eAAe,CAAC,cAAc,CAAC,CAAC,CAACE,YAAY,CAAC,EAAEE,gBAAgB,EAAE,IAAI,CAAC;AAChF,CAAC;AAED,SAASE,iBAAiBA,CAACJ,YAAY,EAAEK,aAAa,EAAE;EACtD,IAAI,CAACL,YAAY,CAACM,OAAO,IAAI,CAACN,YAAY,CAACM,OAAO,CAACC,MAAM,IAAI,CAACP,YAAY,CAACC,iBAAiB,EAAE;IAC5F,MAAM,IAAIJ,UAAU,CAClB,+EACF,CAAC;EACH;EAEA,IAAIQ,aAAa,EAAE,OAAON,qBAAqB,CAACC,YAAY,CAAC;EAE7D,MAAMQ,QAAQ,GACZR,YAAY,CAACM,OAAO,CAACC,MAAM,CAAC,CAAC,CAAC,CAACE,WAAW,CAAC,CAAC,GAAGT,YAAY,CAACM,OAAO,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC;EAEtF,OAAOd,GAAI;AACb,YACMI,YAAY,CAACM,OAAO,CAACC,MACtB,oDAAmDC,QAAS;AACjE,qBACQR,YAAY,CAACM,OAAO,CAACC,MACtB;AACP;AACA,UAAUP,YAAY,CAACC,iBAAiB,CAACE,IAAI,CAAC,KAAK,CAAE;AACrD;AACA;AACA,GAAG;AACH;AAEA,eAAeC,iBAAiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-default-query-params.js","names":["getDefaultQueryParams","schema","updated","properties","adminDefaultListingFilter","where","displayProperties","limit","offset","sort","property","direction"],"sources":["../../src/utils/get-default-query-params.js"],"sourcesContent":["const getDefaultQueryParams =
|
|
1
|
+
{"version":3,"file":"get-default-query-params.js","names":["getDefaultQueryParams","schema","updated","properties","adminDefaultListingFilter","where","displayProperties","limit","offset","sort","property","direction"],"sources":["../../src/utils/get-default-query-params.js"],"sourcesContent":["const getDefaultQueryParams = schema => {\n const updated = schema.properties && schema.properties.updated;\n const { adminDefaultListingFilter: where } = schema.displayProperties || {};\n\n return {\n where,\n limit: 40,\n offset: 0,\n sort: updated\n ? [\n {\n property: 'updated',\n direction: 'desc'\n }\n ]\n : []\n };\n};\n\nexport { getDefaultQueryParams };\n"],"mappings":"AAAA,MAAMA,qBAAqB,GAAGC,MAAM,IAAI;EACtC,MAAMC,OAAO,GAAGD,MAAM,CAACE,UAAU,IAAIF,MAAM,CAACE,UAAU,CAACD,OAAO;EAC9D,MAAM;IAAEE,yBAAyB,EAAEC;EAAM,CAAC,GAAGJ,MAAM,CAACK,iBAAiB,IAAI,CAAC,CAAC;EAE3E,OAAO;IACLD,KAAK;IACLE,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,CAAC;IACTC,IAAI,EAAEP,OAAO,GACT,CACE;MACEQ,QAAQ,EAAE,SAAS;MACnBC,SAAS,EAAE;IACb,CAAC,CACF,GACD;EACN,CAAC;AACH,CAAC;AAED,SAASX,qBAAqB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaze-cms/plugin-data-ui",
|
|
3
|
-
"version": "0.131.0-project-admin-customisations.
|
|
3
|
+
"version": "0.131.0-project-admin-customisations.2",
|
|
4
4
|
"description": "Blaze plugin data ui",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-es/index.js",
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
},
|
|
28
28
|
"license": "GPL-3.0",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@blaze-cms/admin-ui-utils": "0.131.0-project-admin-customisations.
|
|
30
|
+
"@blaze-cms/admin-ui-utils": "0.131.0-project-admin-customisations.2",
|
|
31
31
|
"@blaze-cms/core-errors": "0.131.0-project-admin-customisations.0",
|
|
32
32
|
"@blaze-cms/plugin-render-hooks-ui": "0.131.0-project-admin-customisations.0",
|
|
33
|
-
"@blaze-cms/react-form-builder": "0.131.0-project-admin-customisations.
|
|
34
|
-
"@blaze-cms/react-page-builder": "0.131.0-project-admin-customisations.
|
|
33
|
+
"@blaze-cms/react-form-builder": "0.131.0-project-admin-customisations.2",
|
|
34
|
+
"@blaze-cms/react-page-builder": "0.131.0-project-admin-customisations.2",
|
|
35
35
|
"@blaze-cms/setup-ui": "0.131.0-project-admin-customisations.0",
|
|
36
36
|
"@blaze-cms/versioning-ui": "0.131.0-project-admin-customisations.0",
|
|
37
37
|
"@blaze-react/button": "0.5.19",
|
|
@@ -66,5 +66,5 @@
|
|
|
66
66
|
"lib/*",
|
|
67
67
|
"lib-es/*"
|
|
68
68
|
],
|
|
69
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "afa5f3dedb77eefe1ca4d1e043a8c88d4771e982"
|
|
70
70
|
}
|
|
@@ -21,8 +21,9 @@ const ListingTable = ({ match, entitySchema }) => {
|
|
|
21
21
|
const [previousSchema, setPreviousSchema] = useState({ id: null });
|
|
22
22
|
const [scrollToIndex, setScrollToIndex] = useState(0);
|
|
23
23
|
const [verifiedRanges, setVerifiedRanges] = useState([]);
|
|
24
|
-
const queryParamsDefault = getDefaultQueryParams(
|
|
24
|
+
const queryParamsDefault = getDefaultQueryParams(entitySchema);
|
|
25
25
|
const [queryParams, setQueryParams] = useState(queryParamsDefault);
|
|
26
|
+
const [listFilters, setListFilters] = useState([]);
|
|
26
27
|
const client = useApolloClient();
|
|
27
28
|
const { addToast } = useToasts();
|
|
28
29
|
|
|
@@ -33,21 +34,7 @@ const ListingTable = ({ match, entitySchema }) => {
|
|
|
33
34
|
entitySchema.id !== previousSchema.id ||
|
|
34
35
|
(previousSchema.id === null && entitySchema.id)
|
|
35
36
|
) {
|
|
36
|
-
|
|
37
|
-
client,
|
|
38
|
-
querySettings: {
|
|
39
|
-
entitySchema,
|
|
40
|
-
queryParams: queryParamsDefault
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
const populatedTable = populateRows({
|
|
44
|
-
toggleModal,
|
|
45
|
-
url: match.url,
|
|
46
|
-
entitySchema,
|
|
47
|
-
rows: data
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
setTableData(populatedTable);
|
|
37
|
+
await doQuery();
|
|
51
38
|
setPreviousSchema({ id: entitySchema.id });
|
|
52
39
|
}
|
|
53
40
|
})();
|
|
@@ -55,6 +42,31 @@ const ListingTable = ({ match, entitySchema }) => {
|
|
|
55
42
|
[client, entitySchema, match.url, previousSchema.id, queryParams] // eslint-disable-line react-hooks/exhaustive-deps
|
|
56
43
|
);
|
|
57
44
|
|
|
45
|
+
const doQuery = async (filters = listFilters) => {
|
|
46
|
+
const data = await fetchData({
|
|
47
|
+
client,
|
|
48
|
+
querySettings: {
|
|
49
|
+
entitySchema,
|
|
50
|
+
queryParams: queryParamsDefault
|
|
51
|
+
},
|
|
52
|
+
listFilters: filters
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
const populatedTable = populateRows({
|
|
56
|
+
toggleModal,
|
|
57
|
+
url: match.url,
|
|
58
|
+
entitySchema,
|
|
59
|
+
rows: data
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
setTableData(populatedTable);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const updateListingFilters = async filters => {
|
|
66
|
+
await doQuery(filters);
|
|
67
|
+
setListFilters(filters);
|
|
68
|
+
};
|
|
69
|
+
|
|
58
70
|
const onCloseCardPrompt = () => null;
|
|
59
71
|
|
|
60
72
|
const toggleModal = item => {
|
|
@@ -97,7 +109,8 @@ const ListingTable = ({ match, entitySchema }) => {
|
|
|
97
109
|
querySettings: {
|
|
98
110
|
entitySchema,
|
|
99
111
|
queryParams: sortQueryParams
|
|
100
|
-
}
|
|
112
|
+
},
|
|
113
|
+
listFilters
|
|
101
114
|
});
|
|
102
115
|
const { columns, isEnquiry } = tableData;
|
|
103
116
|
const [firstColumn] = columns;
|
|
@@ -129,7 +142,8 @@ const ListingTable = ({ match, entitySchema }) => {
|
|
|
129
142
|
querySettings: {
|
|
130
143
|
entitySchema,
|
|
131
144
|
queryParams: updatedQueryParams
|
|
132
|
-
}
|
|
145
|
+
},
|
|
146
|
+
listFilters
|
|
133
147
|
});
|
|
134
148
|
const updatedRows = [
|
|
135
149
|
...tableData.rows,
|
|
@@ -183,7 +197,11 @@ const ListingTable = ({ match, entitySchema }) => {
|
|
|
183
197
|
</Fragment>
|
|
184
198
|
)}
|
|
185
199
|
</PageHeader>
|
|
186
|
-
<RenderHook
|
|
200
|
+
<RenderHook
|
|
201
|
+
hookKey="entity:listing:main:top"
|
|
202
|
+
schema={entitySchema}
|
|
203
|
+
setListFilters={updateListingFilters}
|
|
204
|
+
/>
|
|
187
205
|
<ListingTableContent
|
|
188
206
|
overScanBuffer={OVER_SCAN_BUFFER}
|
|
189
207
|
onSort={handleSort}
|
|
@@ -6,9 +6,6 @@ import { withRouter } from 'react-router-dom';
|
|
|
6
6
|
const ListingTableContent = ({
|
|
7
7
|
tableData,
|
|
8
8
|
handleSelect,
|
|
9
|
-
onCloseCardPrompt,
|
|
10
|
-
selectedMenuItem,
|
|
11
|
-
match,
|
|
12
9
|
onSort,
|
|
13
10
|
onClickRow,
|
|
14
11
|
overScanBuffer,
|
|
@@ -44,8 +41,6 @@ const ListingTableContent = ({
|
|
|
44
41
|
|
|
45
42
|
ListingTableContent.propTypes = {
|
|
46
43
|
tableData: PropTypes.object.isRequired,
|
|
47
|
-
onCloseCardPrompt: PropTypes.func.isRequired,
|
|
48
|
-
selectedMenuItem: PropTypes.object,
|
|
49
44
|
match: PropTypes.shape({
|
|
50
45
|
url: PropTypes.string
|
|
51
46
|
}).isRequired,
|
|
@@ -1,12 +1,49 @@
|
|
|
1
1
|
import buildListingQuery from '../../../utils/build-listing-query';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
const
|
|
3
|
+
function buildVariables({ entitySchema, isSearchQuery, listFilters = [], queryParams = {} }) {
|
|
4
|
+
const { identifier } = entitySchema;
|
|
5
|
+
const { sort, offset, limit, where } = queryParams;
|
|
6
|
+
const [{ property, direction }] = sort;
|
|
7
|
+
const parsedOffset = `${property}:${direction}`;
|
|
8
|
+
|
|
9
|
+
if (!isSearchQuery)
|
|
10
|
+
return {
|
|
11
|
+
...queryParams,
|
|
12
|
+
where: !Array.isArray(listFilters) ? listFilters : where
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const rawQuery = {
|
|
16
|
+
bool: {
|
|
17
|
+
must: listFilters || [],
|
|
18
|
+
filter: [
|
|
19
|
+
{
|
|
20
|
+
term: {
|
|
21
|
+
entityIdentifier: identifier
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
limit,
|
|
30
|
+
offset,
|
|
31
|
+
sort: parsedOffset,
|
|
32
|
+
where: JSON.stringify(rawQuery)
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const fetchData = async ({ client, querySettings: { entitySchema, queryParams }, listFilters }) => {
|
|
5
37
|
const {
|
|
6
|
-
|
|
7
|
-
} =
|
|
38
|
+
displayProperties: { adminListings: { dataSource: { source } = {} } = {} } = {}
|
|
39
|
+
} = entitySchema;
|
|
40
|
+
|
|
41
|
+
const isSearchQuery = source === 'search';
|
|
42
|
+
const query = buildListingQuery(entitySchema, isSearchQuery);
|
|
43
|
+
const variables = buildVariables({ entitySchema, listFilters, queryParams, isSearchQuery });
|
|
44
|
+
const { data = {} } = await client.query({ query, variables, fetchPolicy: 'network-only' });
|
|
8
45
|
|
|
9
|
-
return listingData;
|
|
46
|
+
return data.searchResults ? data.searchResults.results : data.listingData;
|
|
10
47
|
};
|
|
11
48
|
|
|
12
49
|
export { fetchData };
|
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
import { gql } from '@apollo/client';
|
|
2
2
|
import { BlazeError } from '@blaze-cms/core-errors';
|
|
3
|
+
import { getDynamicQuery } from '@blaze-cms/admin-ui-utils';
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
const buildAdminSearchQuery = entitySchema => {
|
|
6
|
+
const { listingProperties = [] } = entitySchema || {};
|
|
7
|
+
const parsedProperties = `id, ${listingProperties.join(' ') || 'id name'}`;
|
|
8
|
+
|
|
9
|
+
return getDynamicQuery('ADMIN_SEARCH')([entitySchema], parsedProperties, true);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
function buildListingQuery(entitySchema, isSearchQuery) {
|
|
5
13
|
if (!entitySchema.actions || !entitySchema.actions.getAll || !entitySchema.listingProperties) {
|
|
6
14
|
throw new BlazeError(
|
|
7
15
|
'Listing query requires getAll action and listingProperties from entity schema'
|
|
8
16
|
);
|
|
9
17
|
}
|
|
10
18
|
|
|
19
|
+
if (isSearchQuery) return buildAdminSearchQuery(entitySchema);
|
|
20
|
+
|
|
11
21
|
const sortType =
|
|
12
22
|
entitySchema.actions.getAll[0].toUpperCase() + entitySchema.actions.getAll.substr(1);
|
|
13
23
|
|