From b83c64d4af5aec62640624f413139a24c8386d59 Mon Sep 17 00:00:00 2001 From: Ayobami Akingbade Date: Wed, 4 Oct 2023 11:12:04 +0100 Subject: [PATCH 1/6] =?UTF-8?q?=F0=9F=A7=B9=20chore(rebrand):=20rebrand=20?= =?UTF-8?q?to=20dashpress?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 2 +- .eslintrc.json | 2 +- .github/ISSUE_TEMPLATE/01_BUG_REPORT.md | 4 +- .github/ISSUE_TEMPLATE/config.yml | 6 +- CHANGELOG.md | 208 +++++++++--------- Dockerfile.example | 12 +- README.md | 68 +++--- bin/{hadmean => dashpress} | 0 docs/CODE_OF_CONDUCT.md | 2 +- docs/CONTRIBUTING.md | 10 +- docs/SECURITY.md | 4 +- package-lock.json | 180 +++++++-------- package.json | 8 +- src/__tests__/_/api-handlers/config.ts | 2 +- src/__tests__/_/api-handlers/setup.ts | 6 +- src/__tests__/admin/settings/site.spec.tsx | 4 +- .../api/versions/index__latest.spec.ts | 2 +- .../api/versions/index__non-latest.spec.ts | 2 +- src/__tests__/setup/credentials.spec.tsx | 2 +- .../actions/__tests__/run-action.spec.ts | 6 +- .../lib/config-persistence/constants.ts | 2 +- src/backend/lib/connection/db.ts | 2 +- src/backend/npm-packages/constants.ts | 2 +- src/backend/schema/schema.service.ts | 6 +- src/bin/index.ts | 27 ++- src/frontend/_layouts/app/_Base.tsx | 10 +- .../components/Alert/Stories.tsx | 4 +- src/frontend/design-system/theme/root.ts | 2 +- src/frontend/docs/fields.tsx | 8 +- src/frontend/docs/roles.tsx | 2 +- src/frontend/docs/scripts/form-scripts.tsx | 2 +- src/frontend/docs/system-settings.tsx | 4 +- src/frontend/hooks/app/site.config.ts | 2 +- src/frontend/views/settings/_Base.tsx | 7 +- src/pages/api/versions.ts | 4 +- src/shared/configurations/constants.ts | 4 +- 36 files changed, 310 insertions(+), 308 deletions(-) rename bin/{hadmean => dashpress} (100%) diff --git a/.env.example b/.env.example index 4b5a1434c..e885c773d 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,4 @@ -# Go to https://hadmean.com/docs/installation/env for more information about this file +# Go to https://dashpress.io/docs/installation/env for more information about this file CONFIG_ADAPTOR=json-file CONFIG_ADAPTOR_CONNECTION_STRING=PLACE_HOLDER_CONFIG_ADAPTOR_CONNECTION_STRING diff --git a/.eslintrc.json b/.eslintrc.json index 88c05ad8f..054dcfba6 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,3 +1,3 @@ { - "extends": "@hadmean" + "extends": "@dashpress" } \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/01_BUG_REPORT.md b/.github/ISSUE_TEMPLATE/01_BUG_REPORT.md index 272f9533b..ebff34a11 100644 --- a/.github/ISSUE_TEMPLATE/01_BUG_REPORT.md +++ b/.github/ISSUE_TEMPLATE/01_BUG_REPORT.md @@ -1,6 +1,6 @@ --- name: Bug Report -about: Create a report to help Hadmean to improve +about: Create a report to help DashPress to improve title: "bug: " labels: "bug" assignees: "" @@ -8,7 +8,7 @@ assignees: "" # Bug Report -**Hadmean version:** +**DashPress version:** diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 21a78e460..ad6203900 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -2,8 +2,8 @@ blank_issues_enabled: false contact_links: - name: Feature Request - url: https://github.com/hadmean/hadmean/discussions/new - about: Share your ideas on how to make Hadmean better. - - name: Hadmean Community Support + url: https://github.com/dashpresshq/dashpress/discussions/new + about: Share your ideas on how to make DashPress better. + - name: DashPress Community Support url: https://discord.gg/aV6DxwXhzN about: Please ask and answer questions here. \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 60170107b..fa0c1de8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,115 +2,115 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. -### [0.0.51](https://github.com/hadmean/hadmean/compare/v0.0.29...v0.0.51) (2022-11-12) +### [0.0.51](https://github.com/dashpresshq/dashpress/compare/v0.0.29...v0.0.51) (2022-11-12) ### Features -* abbreviate large numbers ([7264dbe](https://github.com/hadmean/hadmean/commit/7264dbe83580afab850f5790ea3c13b87093ffa9)) -* add health check ([5edf57f](https://github.com/hadmean/hadmean/commit/5edf57f3709cc4d264ef6c1c64c875d211a5abd1)) -* add id to table tabs ([6b1021d](https://github.com/hadmean/hadmean/commit/6b1021dc743cad82ba669f839ae96a9cc637d149)) -* add new dashboard item ([c1b015b](https://github.com/hadmean/hadmean/commit/c1b015b62b58b022b8fdc408778e888ce1c1d963)) -* add only disbaled entities to dashboard ([ff37858](https://github.com/hadmean/hadmean/commit/ff378589eb6fe74a0ddd71e1683ae86bca2e1423)) -* allow color theming of application ([1dde4f8](https://github.com/hadmean/hadmean/commit/1dde4f81ec4d8ace68253e69d24f9f91cfebb3ce)) -* allow connection string input ([a9d3f3b](https://github.com/hadmean/hadmean/commit/a9d3f3b8aa3103db0c3e09fed3e2c22ce4fb897e)) -* allow SVG input ([bf2b28c](https://github.com/hadmean/hadmean/commit/bf2b28c12883f8dba4daae5d36b3b2ba0a96a8d6)) -* base credentials setup ([93af285](https://github.com/hadmean/hadmean/commit/93af285bd63cc7bf1d5f123ecd62c3d1aef12dae)) -* base integrations config request handlers ([4b5693d](https://github.com/hadmean/hadmean/commit/4b5693db3aa29f9decf5a6cbba8ca5ef2f0efd68)) -* block password change on demo env ([c3fed44](https://github.com/hadmean/hadmean/commit/c3fed4409e257997435ac3426cc134ff4265bdd0)) -* boostrap dashboard ([a61abee](https://github.com/hadmean/hadmean/commit/a61abeefe8fcb6e965129b7c5701f2b4f7b641d7)) -* boostrap scope implementation ([78963b9](https://github.com/hadmean/hadmean/commit/78963b9504fb12b40de441d0c8a794cbcfebb38a)) -* build key value form ([999f464](https://github.com/hadmean/hadmean/commit/999f4641d5fe402f94f1485ecd5ad3c9a0be5d1c)) -* clean table skeleton ([11937c5](https://github.com/hadmean/hadmean/commit/11937c55b468b51cc3569bb2625325e1babb0566)) -* complete integrations controller ([ea842b9](https://github.com/hadmean/hadmean/commit/ea842b9d6093cb279bc94597751c31e0bddaf448)) -* complete integrations request handler ([f8f6ca7](https://github.com/hadmean/hadmean/commit/f8f6ca7790d7c19031fdf0c3e75f09f53fe5694f)) -* CRUD tab disable indicator ([507dffe](https://github.com/hadmean/hadmean/commit/507dffe714a4cb4e791cf97bb75dec10a53b084b)) -* dark and light mode color scheme ([55fc7f6](https://github.com/hadmean/hadmean/commit/55fc7f6d1e0d2cdc2fa44b375c1da5e08f99a30b)) -* dark mode ([149bab4](https://github.com/hadmean/hadmean/commit/149bab45660d0366be09a628e203c06ba110e668)) -* dasboard store ([c52c86e](https://github.com/hadmean/hadmean/commit/c52c86e33c7ff518b3af7dae4de42500392dc082)) -* dashboard controller ([f9b68f1](https://github.com/hadmean/hadmean/commit/f9b68f1161b8fcce51b9d682a28789322ba80814)) -* Dashboard Create and update ([9cece27](https://github.com/hadmean/hadmean/commit/9cece27a1103362a266cd8b0831760c795b42f71)) -* dashboard request handler ([cb11f3b](https://github.com/hadmean/hadmean/commit/cb11f3bf38c20c97aa4ba8690a413f5dadb87e2d)) -* dashboard service ([82eaab7](https://github.com/hadmean/hadmean/commit/82eaab7fa9cf1f91d8a929255f02d8bd02faf581)) -* date time BE ([3740027](https://github.com/hadmean/hadmean/commit/37400270a050acae4f1108f2ab773f8377c246bb)) -* define theme colors ([3f67f28](https://github.com/hadmean/hadmean/commit/3f67f28a85864202ed9815492589a7bc486fdbe8)) -* delete and arrange dashboard ([6657b32](https://github.com/hadmean/hadmean/commit/6657b327d3c645d20a4d58f6ea53c60f89a88e45)) -* demo video on demo site ([9896f0f](https://github.com/hadmean/hadmean/commit/9896f0f938de66a2ac46ce5fc4d151c9af49705b)) -* disable deleting root account ([b77573a](https://github.com/hadmean/hadmean/commit/b77573aa443e0038cca3dc91178a0e2a2e345652)) -* fix theme put endpoint update ([459c91a](https://github.com/hadmean/hadmean/commit/459c91ae99faecb157fbfbad0c357d814f51c15e)) -* formatting dashboard schema ([828ba17](https://github.com/hadmean/hadmean/commit/828ba178b98bee924de2debae534121ef77b7f3b)) -* guest configs ([827bce0](https://github.com/hadmean/hadmean/commit/827bce06cb73dad8ef0f0108e0b04aefba48660a)) -* handling sqlite connection more gracefully ([b9a4688](https://github.com/hadmean/hadmean/commit/b9a46886289939b86fdcb83ddd9e2424c88dcc99)) -* hide actions on table tab form ([7680c63](https://github.com/hadmean/hadmean/commit/7680c63ac3fbc62d7214178157718c9df408cb16)) -* hide configurations ([5003b15](https://github.com/hadmean/hadmean/commit/5003b15dd09443cb31096b0cca522d965cca8534)) -* implement getAllItemsIn ([ffa9d37](https://github.com/hadmean/hadmean/commit/ffa9d37cadfbc35e7dd61fbe2082489b1296af3d)) -* implement use group value ([404cd99](https://github.com/hadmean/hadmean/commit/404cd9948c56d2e733f0a94ec7c185ceae3626eb)) -* implement date filter BE ([5ee22ae](https://github.com/hadmean/hadmean/commit/5ee22aee7c00c33a174bb3e5068d5cb8bd1af723)) -* implement date input ([e9df93e](https://github.com/hadmean/hadmean/commit/e9df93e7fbb00039db2bc97ad6c6afb0763fcd06)) -* implement form action ([e4eb595](https://github.com/hadmean/hadmean/commit/e4eb595562e518eb61cfd93d78bf2dadde7558d5)) -* implement getAllAsKeyValuePair ([0ddf784](https://github.com/hadmean/hadmean/commit/0ddf784c19bdfb2aa9b10ce3d9de10add01fe3a0)) -* implement icon on summary widget ([d7bb5f5](https://github.com/hadmean/hadmean/commit/d7bb5f5f4d11023ce62587a685a9d0998f87d2c6)) -* implement image type rendering ([d14b853](https://github.com/hadmean/hadmean/commit/d14b853aa6243be04bc05bd6d271852dbaf54f92)) -* implement integrations configuration ([01b5ede](https://github.com/hadmean/hadmean/commit/01b5edef93d6e33ffa8b7ae719f75d84f9b82842)) -* implement integrations configuration controller ([3010dac](https://github.com/hadmean/hadmean/commit/3010dacf6b679f0dd640eaac365a45caf60ea12e)) -* implementing data sources ([5ec7385](https://github.com/hadmean/hadmean/commit/5ec7385d6e8d914ab2a4a06db33e7d8660ab904e)) -* improve mobile view ([686db60](https://github.com/hadmean/hadmean/commit/686db60271a92d37ec219565d4e1d6e8cfc2d84a)) -* integrations configuration UI ([ce25a43](https://github.com/hadmean/hadmean/commit/ce25a43237678944f58e4d0e381c218f91a72837)) -* lean tables ([6af6a79](https://github.com/hadmean/hadmean/commit/6af6a79ecad225a72da2137dde238453f06be14f)) -* loop table tabs ([df3148b](https://github.com/hadmean/hadmean/commit/df3148ba6679bb29d698f6414b2e26866f9690c8)) -* manage dashboard UI ([57a3593](https://github.com/hadmean/hadmean/commit/57a3593e9e6febdbd359689dba29b0310cb075b7)) -* managing dashboard ([3fa5887](https://github.com/hadmean/hadmean/commit/3fa5887f237d1a4b7b417fe24796a7c2d6cdc8a0)) -* move account nac down ([8761764](https://github.com/hadmean/hadmean/commit/8761764dba520408ecbef94833dc4427a2a6a855)) -* move all table actins to the top of page ([14c1635](https://github.com/hadmean/hadmean/commit/14c1635748066019803bb90a120344743eaa6268)) -* move dark/light to user preferences ([7eba9e2](https://github.com/hadmean/hadmean/commit/7eba9e22980bdc1fbbae33f3a79d73b60dd4d97c)) -* order credentials for m in sane manner ([a26a2b7](https://github.com/hadmean/hadmean/commit/a26a2b7712a66bc1d7f42dc3a462844dbe1d86ee)) -* order to table tabs ([e1c802a](https://github.com/hadmean/hadmean/commit/e1c802a8d3e66c3e5967dbdfc57795a5580245a6)) -* pass help text to SVG ([51d9240](https://github.com/hadmean/hadmean/commit/51d9240a1d12c3c95d6a26b3f8c18955e1304a37)) -* persist default relationship item ([f48964b](https://github.com/hadmean/hadmean/commit/f48964bfca488ed472a3fd2af174ca70e1b425d4)) -* process relative dashboard days ([9c6914e](https://github.com/hadmean/hadmean/commit/9c6914ef9f8f4ac4ebce0c9898efe051ad217c03)) -* register integrations configuration on bootstrap ([9fbb219](https://github.com/hadmean/hadmean/commit/9fbb219a50e1b38222717e2e721bfaaa10cc6b95)) -* relative time constants ([9f33056](https://github.com/hadmean/hadmean/commit/9f330560c6fb0d8facc90e01958bdac0dfd22db8)) -* remove dead file ([a30ad27](https://github.com/hadmean/hadmean/commit/a30ad27279135603c51b8633eb91137fe2f6a44e)) -* remove id fields from create/update forms ([d006733](https://github.com/hadmean/hadmean/commit/d0067339ada02b005d57eee7f04df7f81900b040)) -* remove setup flickers ([bb436b3](https://github.com/hadmean/hadmean/commit/bb436b334b73a53d30c8a5d9bb0ada95df507629)) -* render table on dashboard ([6c19580](https://github.com/hadmean/hadmean/commit/6c1958081ad7fd6254e91fffb0f0ed43306b40b0)) -* render table tabs ([e91046a](https://github.com/hadmean/hadmean/commit/e91046aa9d8f4e772063390069895e1f6c9ee11d)) -* show test login ([36e5be6](https://github.com/hadmean/hadmean/commit/36e5be6f2cbcb9db8f83a1396ad0457310b990c3)) -* signin form values for demo account ([21f690d](https://github.com/hadmean/hadmean/commit/21f690d55607c3a1fa84d3df1c409cbac287d005)) -* site settings ([3a78a00](https://github.com/hadmean/hadmean/commit/3a78a00ba43125b867c227463c873e47630bdba0)) -* split credentials to one line ([a22b95e](https://github.com/hadmean/hadmean/commit/a22b95ebf8deb06f20f9ef38c49542cf6eea71b3)) -* summary status indicator ([f155aa4](https://github.com/hadmean/hadmean/commit/f155aa46ac3a48d4efca79622fa318c37d73cd6a)) -* table filters count ([fdfeb29](https://github.com/hadmean/hadmean/commit/fdfeb29f52c85b505cb27609aff69aefe243775f)) -* table tab add and remove ([f1f3b2e](https://github.com/hadmean/hadmean/commit/f1f3b2edb4334f00b3f662da0275725586929dc1)) -* table tab button positioning ([18d3105](https://github.com/hadmean/hadmean/commit/18d3105f0ff23bbbbd35642c6e762e8b495a4242)) -* table tab reflecting ([95a1c18](https://github.com/hadmean/hadmean/commit/95a1c189f91997addec2f8fe2bba60b90ea5685b)) -* table tab settings view ([fe2df61](https://github.com/hadmean/hadmean/commit/fe2df61fff6c13b1c4a1a3f98d057f40738f275e)) -* time comparision in all direction ([80e796c](https://github.com/hadmean/hadmean/commit/80e796cdb34a4a8ab43f5f62047d8f01b28474c9)) -* use table for table view ([b06c3a1](https://github.com/hadmean/hadmean/commit/b06c3a11a8e738e273981c103388360ee68eb86f)) -* use table tabs in filter ([f639668](https://github.com/hadmean/hadmean/commit/f6396688402d19e26d2aa19ce5e5fee81bb43a31)) -* user preferences imlementation ([4313871](https://github.com/hadmean/hadmean/commit/43138714a2bb028aa0d8f9bbcbc242f8e96e5231)) +* abbreviate large numbers ([7264dbe](https://github.com/dashpresshq/dashpress/commit/7264dbe83580afab850f5790ea3c13b87093ffa9)) +* add health check ([5edf57f](https://github.com/dashpresshq/dashpress/commit/5edf57f3709cc4d264ef6c1c64c875d211a5abd1)) +* add id to table tabs ([6b1021d](https://github.com/dashpresshq/dashpress/commit/6b1021dc743cad82ba669f839ae96a9cc637d149)) +* add new dashboard item ([c1b015b](https://github.com/dashpresshq/dashpress/commit/c1b015b62b58b022b8fdc408778e888ce1c1d963)) +* add only disbaled entities to dashboard ([ff37858](https://github.com/dashpresshq/dashpress/commit/ff378589eb6fe74a0ddd71e1683ae86bca2e1423)) +* allow color theming of application ([1dde4f8](https://github.com/dashpresshq/dashpress/commit/1dde4f81ec4d8ace68253e69d24f9f91cfebb3ce)) +* allow connection string input ([a9d3f3b](https://github.com/dashpresshq/dashpress/commit/a9d3f3b8aa3103db0c3e09fed3e2c22ce4fb897e)) +* allow SVG input ([bf2b28c](https://github.com/dashpresshq/dashpress/commit/bf2b28c12883f8dba4daae5d36b3b2ba0a96a8d6)) +* base credentials setup ([93af285](https://github.com/dashpresshq/dashpress/commit/93af285bd63cc7bf1d5f123ecd62c3d1aef12dae)) +* base integrations config request handlers ([4b5693d](https://github.com/dashpresshq/dashpress/commit/4b5693db3aa29f9decf5a6cbba8ca5ef2f0efd68)) +* block password change on demo env ([c3fed44](https://github.com/dashpresshq/dashpress/commit/c3fed4409e257997435ac3426cc134ff4265bdd0)) +* boostrap dashboard ([a61abee](https://github.com/dashpresshq/dashpress/commit/a61abeefe8fcb6e965129b7c5701f2b4f7b641d7)) +* boostrap scope implementation ([78963b9](https://github.com/dashpresshq/dashpress/commit/78963b9504fb12b40de441d0c8a794cbcfebb38a)) +* build key value form ([999f464](https://github.com/dashpresshq/dashpress/commit/999f4641d5fe402f94f1485ecd5ad3c9a0be5d1c)) +* clean table skeleton ([11937c5](https://github.com/dashpresshq/dashpress/commit/11937c55b468b51cc3569bb2625325e1babb0566)) +* complete integrations controller ([ea842b9](https://github.com/dashpresshq/dashpress/commit/ea842b9d6093cb279bc94597751c31e0bddaf448)) +* complete integrations request handler ([f8f6ca7](https://github.com/dashpresshq/dashpress/commit/f8f6ca7790d7c19031fdf0c3e75f09f53fe5694f)) +* CRUD tab disable indicator ([507dffe](https://github.com/dashpresshq/dashpress/commit/507dffe714a4cb4e791cf97bb75dec10a53b084b)) +* dark and light mode color scheme ([55fc7f6](https://github.com/dashpresshq/dashpress/commit/55fc7f6d1e0d2cdc2fa44b375c1da5e08f99a30b)) +* dark mode ([149bab4](https://github.com/dashpresshq/dashpress/commit/149bab45660d0366be09a628e203c06ba110e668)) +* dasboard store ([c52c86e](https://github.com/dashpresshq/dashpress/commit/c52c86e33c7ff518b3af7dae4de42500392dc082)) +* dashboard controller ([f9b68f1](https://github.com/dashpresshq/dashpress/commit/f9b68f1161b8fcce51b9d682a28789322ba80814)) +* Dashboard Create and update ([9cece27](https://github.com/dashpresshq/dashpress/commit/9cece27a1103362a266cd8b0831760c795b42f71)) +* dashboard request handler ([cb11f3b](https://github.com/dashpresshq/dashpress/commit/cb11f3bf38c20c97aa4ba8690a413f5dadb87e2d)) +* dashboard service ([82eaab7](https://github.com/dashpresshq/dashpress/commit/82eaab7fa9cf1f91d8a929255f02d8bd02faf581)) +* date time BE ([3740027](https://github.com/dashpresshq/dashpress/commit/37400270a050acae4f1108f2ab773f8377c246bb)) +* define theme colors ([3f67f28](https://github.com/dashpresshq/dashpress/commit/3f67f28a85864202ed9815492589a7bc486fdbe8)) +* delete and arrange dashboard ([6657b32](https://github.com/dashpresshq/dashpress/commit/6657b327d3c645d20a4d58f6ea53c60f89a88e45)) +* demo video on demo site ([9896f0f](https://github.com/dashpresshq/dashpress/commit/9896f0f938de66a2ac46ce5fc4d151c9af49705b)) +* disable deleting root account ([b77573a](https://github.com/dashpresshq/dashpress/commit/b77573aa443e0038cca3dc91178a0e2a2e345652)) +* fix theme put endpoint update ([459c91a](https://github.com/dashpresshq/dashpress/commit/459c91ae99faecb157fbfbad0c357d814f51c15e)) +* formatting dashboard schema ([828ba17](https://github.com/dashpresshq/dashpress/commit/828ba178b98bee924de2debae534121ef77b7f3b)) +* guest configs ([827bce0](https://github.com/dashpresshq/dashpress/commit/827bce06cb73dad8ef0f0108e0b04aefba48660a)) +* handling sqlite connection more gracefully ([b9a4688](https://github.com/dashpresshq/dashpress/commit/b9a46886289939b86fdcb83ddd9e2424c88dcc99)) +* hide actions on table tab form ([7680c63](https://github.com/dashpresshq/dashpress/commit/7680c63ac3fbc62d7214178157718c9df408cb16)) +* hide configurations ([5003b15](https://github.com/dashpresshq/dashpress/commit/5003b15dd09443cb31096b0cca522d965cca8534)) +* implement getAllItemsIn ([ffa9d37](https://github.com/dashpresshq/dashpress/commit/ffa9d37cadfbc35e7dd61fbe2082489b1296af3d)) +* implement use group value ([404cd99](https://github.com/dashpresshq/dashpress/commit/404cd9948c56d2e733f0a94ec7c185ceae3626eb)) +* implement date filter BE ([5ee22ae](https://github.com/dashpresshq/dashpress/commit/5ee22aee7c00c33a174bb3e5068d5cb8bd1af723)) +* implement date input ([e9df93e](https://github.com/dashpresshq/dashpress/commit/e9df93e7fbb00039db2bc97ad6c6afb0763fcd06)) +* implement form action ([e4eb595](https://github.com/dashpresshq/dashpress/commit/e4eb595562e518eb61cfd93d78bf2dadde7558d5)) +* implement getAllAsKeyValuePair ([0ddf784](https://github.com/dashpresshq/dashpress/commit/0ddf784c19bdfb2aa9b10ce3d9de10add01fe3a0)) +* implement icon on summary widget ([d7bb5f5](https://github.com/dashpresshq/dashpress/commit/d7bb5f5f4d11023ce62587a685a9d0998f87d2c6)) +* implement image type rendering ([d14b853](https://github.com/dashpresshq/dashpress/commit/d14b853aa6243be04bc05bd6d271852dbaf54f92)) +* implement integrations configuration ([01b5ede](https://github.com/dashpresshq/dashpress/commit/01b5edef93d6e33ffa8b7ae719f75d84f9b82842)) +* implement integrations configuration controller ([3010dac](https://github.com/dashpresshq/dashpress/commit/3010dacf6b679f0dd640eaac365a45caf60ea12e)) +* implementing data sources ([5ec7385](https://github.com/dashpresshq/dashpress/commit/5ec7385d6e8d914ab2a4a06db33e7d8660ab904e)) +* improve mobile view ([686db60](https://github.com/dashpresshq/dashpress/commit/686db60271a92d37ec219565d4e1d6e8cfc2d84a)) +* integrations configuration UI ([ce25a43](https://github.com/dashpresshq/dashpress/commit/ce25a43237678944f58e4d0e381c218f91a72837)) +* lean tables ([6af6a79](https://github.com/dashpresshq/dashpress/commit/6af6a79ecad225a72da2137dde238453f06be14f)) +* loop table tabs ([df3148b](https://github.com/dashpresshq/dashpress/commit/df3148ba6679bb29d698f6414b2e26866f9690c8)) +* manage dashboard UI ([57a3593](https://github.com/dashpresshq/dashpress/commit/57a3593e9e6febdbd359689dba29b0310cb075b7)) +* managing dashboard ([3fa5887](https://github.com/dashpresshq/dashpress/commit/3fa5887f237d1a4b7b417fe24796a7c2d6cdc8a0)) +* move account nac down ([8761764](https://github.com/dashpresshq/dashpress/commit/8761764dba520408ecbef94833dc4427a2a6a855)) +* move all table actins to the top of page ([14c1635](https://github.com/dashpresshq/dashpress/commit/14c1635748066019803bb90a120344743eaa6268)) +* move dark/light to user preferences ([7eba9e2](https://github.com/dashpresshq/dashpress/commit/7eba9e22980bdc1fbbae33f3a79d73b60dd4d97c)) +* order credentials for m in sane manner ([a26a2b7](https://github.com/dashpresshq/dashpress/commit/a26a2b7712a66bc1d7f42dc3a462844dbe1d86ee)) +* order to table tabs ([e1c802a](https://github.com/dashpresshq/dashpress/commit/e1c802a8d3e66c3e5967dbdfc57795a5580245a6)) +* pass help text to SVG ([51d9240](https://github.com/dashpresshq/dashpress/commit/51d9240a1d12c3c95d6a26b3f8c18955e1304a37)) +* persist default relationship item ([f48964b](https://github.com/dashpresshq/dashpress/commit/f48964bfca488ed472a3fd2af174ca70e1b425d4)) +* process relative dashboard days ([9c6914e](https://github.com/dashpresshq/dashpress/commit/9c6914ef9f8f4ac4ebce0c9898efe051ad217c03)) +* register integrations configuration on bootstrap ([9fbb219](https://github.com/dashpresshq/dashpress/commit/9fbb219a50e1b38222717e2e721bfaaa10cc6b95)) +* relative time constants ([9f33056](https://github.com/dashpresshq/dashpress/commit/9f330560c6fb0d8facc90e01958bdac0dfd22db8)) +* remove dead file ([a30ad27](https://github.com/dashpresshq/dashpress/commit/a30ad27279135603c51b8633eb91137fe2f6a44e)) +* remove id fields from create/update forms ([d006733](https://github.com/dashpresshq/dashpress/commit/d0067339ada02b005d57eee7f04df7f81900b040)) +* remove setup flickers ([bb436b3](https://github.com/dashpresshq/dashpress/commit/bb436b334b73a53d30c8a5d9bb0ada95df507629)) +* render table on dashboard ([6c19580](https://github.com/dashpresshq/dashpress/commit/6c1958081ad7fd6254e91fffb0f0ed43306b40b0)) +* render table tabs ([e91046a](https://github.com/dashpresshq/dashpress/commit/e91046aa9d8f4e772063390069895e1f6c9ee11d)) +* show test login ([36e5be6](https://github.com/dashpresshq/dashpress/commit/36e5be6f2cbcb9db8f83a1396ad0457310b990c3)) +* signin form values for demo account ([21f690d](https://github.com/dashpresshq/dashpress/commit/21f690d55607c3a1fa84d3df1c409cbac287d005)) +* site settings ([3a78a00](https://github.com/dashpresshq/dashpress/commit/3a78a00ba43125b867c227463c873e47630bdba0)) +* split credentials to one line ([a22b95e](https://github.com/dashpresshq/dashpress/commit/a22b95ebf8deb06f20f9ef38c49542cf6eea71b3)) +* summary status indicator ([f155aa4](https://github.com/dashpresshq/dashpress/commit/f155aa46ac3a48d4efca79622fa318c37d73cd6a)) +* table filters count ([fdfeb29](https://github.com/dashpresshq/dashpress/commit/fdfeb29f52c85b505cb27609aff69aefe243775f)) +* table tab add and remove ([f1f3b2e](https://github.com/dashpresshq/dashpress/commit/f1f3b2edb4334f00b3f662da0275725586929dc1)) +* table tab button positioning ([18d3105](https://github.com/dashpresshq/dashpress/commit/18d3105f0ff23bbbbd35642c6e762e8b495a4242)) +* table tab reflecting ([95a1c18](https://github.com/dashpresshq/dashpress/commit/95a1c189f91997addec2f8fe2bba60b90ea5685b)) +* table tab settings view ([fe2df61](https://github.com/dashpresshq/dashpress/commit/fe2df61fff6c13b1c4a1a3f98d057f40738f275e)) +* time comparision in all direction ([80e796c](https://github.com/dashpresshq/dashpress/commit/80e796cdb34a4a8ab43f5f62047d8f01b28474c9)) +* use table for table view ([b06c3a1](https://github.com/dashpresshq/dashpress/commit/b06c3a11a8e738e273981c103388360ee68eb86f)) +* use table tabs in filter ([f639668](https://github.com/dashpresshq/dashpress/commit/f6396688402d19e26d2aa19ce5e5fee81bb43a31)) +* user preferences imlementation ([4313871](https://github.com/dashpresshq/dashpress/commit/43138714a2bb028aa0d8f9bbcbc242f8e96e5231)) ### Bug Fixes -* add table Style card for relations table ([c62b7e7](https://github.com/hadmean/hadmean/commit/c62b7e73d175266684d5f492dab3d08db1ce995a)) -* add view state machine for users and roles ([c84a08c](https://github.com/hadmean/hadmean/commit/c84a08c2226397e740724561fd2b7b3ad8ea3f86)) -* AT LAST FIXED BREADCRUMBS GO BACK, PLEASE DONT ASK HOW IT WORKS :wink ([b63f587](https://github.com/hadmean/hadmean/commit/b63f58704b55d030841b1b8a93957983c6221374)) -* breadcrumb moving forward ([294a00d](https://github.com/hadmean/hadmean/commit/294a00d94257e474f259e5433a8a1dd20c54f4b1)) -* dont block non-admin from access config ([b23363c](https://github.com/hadmean/hadmean/commit/b23363cce9c1b8be293349f66daa93ffd0015c58)) -* dont error on boostrap ([1145d7e](https://github.com/hadmean/hadmean/commit/1145d7ee7204c122cd6461c904a9522f9576121d)) -* dont error on credentials boostrap ([a391950](https://github.com/hadmean/hadmean/commit/a391950c9788784921141bb4ce8b15389e15b7a9)) -* entityToOneReferenceFields loading issue ([9a7b27c](https://github.com/hadmean/hadmean/commit/9a7b27cdf3bf523db5a86305e97d3924d8aae7fa)) -* fix summary buttons ([9f299bc](https://github.com/hadmean/hadmean/commit/9f299bc9fa08ec5017ea8a178a9ab2ff4a05e152)) -* getFieldsOffFormat errors on first char input ([0caba9b](https://github.com/hadmean/hadmean/commit/0caba9bd05588ec5449154cfc062a4200c5ce78c)) -* go to link index ([4e8c1dc](https://github.com/hadmean/hadmean/commit/4e8c1dc6ff491eee6cc07471c6d762a37c27ba6f)) -* move breadcrumb to store ([1f68a7d](https://github.com/hadmean/hadmean/commit/1f68a7d5e633cde06ddafb1cf4a2b58dcaf81cea)) -* mutation bug in multiple table filter objects ([01b058e](https://github.com/hadmean/hadmean/commit/01b058e105fd26b7e0dbab15f2b7faca85dc5a2d)) -* open panel on dashboard ([81e47b5](https://github.com/hadmean/hadmean/commit/81e47b5d3b5072011ab4efaec14d125f84e00fb0)) -* query filters ([3d95f13](https://github.com/hadmean/hadmean/commit/3d95f13f6ef1c17c32e7bf54281c05aeb272f641)) -* remove hadmean dbs from view ([46d26bb](https://github.com/hadmean/hadmean/commit/46d26bb9214a0a9e0052af26cac3833ba5464f41)) -* rendering object types in table ([f17dcee](https://github.com/hadmean/hadmean/commit/f17dceee5b0d0dffbd1f4d822c5ae4c20476eca0)) -* roles id update issues ([9a96303](https://github.com/hadmean/hadmean/commit/9a96303044961e99653725393687f7209d1e7746)) -* types ([a80149e](https://github.com/hadmean/hadmean/commit/a80149ed158625cf19a4c8f703076c6cf9f11767)) -* use correct dashboard filter ID ([229b7bf](https://github.com/hadmean/hadmean/commit/229b7bfe562f42bc425298036cd7dc0a342172fd)) -* verify connection before saving ([f5aeea7](https://github.com/hadmean/hadmean/commit/f5aeea7c82ab428b98585638f877b3f8d82c8c08)) +* add table Style card for relations table ([c62b7e7](https://github.com/dashpresshq/dashpress/commit/c62b7e73d175266684d5f492dab3d08db1ce995a)) +* add view state machine for users and roles ([c84a08c](https://github.com/dashpresshq/dashpress/commit/c84a08c2226397e740724561fd2b7b3ad8ea3f86)) +* AT LAST FIXED BREADCRUMBS GO BACK, PLEASE DONT ASK HOW IT WORKS :wink ([b63f587](https://github.com/dashpresshq/dashpress/commit/b63f58704b55d030841b1b8a93957983c6221374)) +* breadcrumb moving forward ([294a00d](https://github.com/dashpresshq/dashpress/commit/294a00d94257e474f259e5433a8a1dd20c54f4b1)) +* dont block non-admin from access config ([b23363c](https://github.com/dashpresshq/dashpress/commit/b23363cce9c1b8be293349f66daa93ffd0015c58)) +* dont error on boostrap ([1145d7e](https://github.com/dashpresshq/dashpress/commit/1145d7ee7204c122cd6461c904a9522f9576121d)) +* dont error on credentials boostrap ([a391950](https://github.com/dashpresshq/dashpress/commit/a391950c9788784921141bb4ce8b15389e15b7a9)) +* entityToOneReferenceFields loading issue ([9a7b27c](https://github.com/dashpresshq/dashpress/commit/9a7b27cdf3bf523db5a86305e97d3924d8aae7fa)) +* fix summary buttons ([9f299bc](https://github.com/dashpresshq/dashpress/commit/9f299bc9fa08ec5017ea8a178a9ab2ff4a05e152)) +* getFieldsOffFormat errors on first char input ([0caba9b](https://github.com/dashpresshq/dashpress/commit/0caba9bd05588ec5449154cfc062a4200c5ce78c)) +* go to link index ([4e8c1dc](https://github.com/dashpresshq/dashpress/commit/4e8c1dc6ff491eee6cc07471c6d762a37c27ba6f)) +* move breadcrumb to store ([1f68a7d](https://github.com/dashpresshq/dashpress/commit/1f68a7d5e633cde06ddafb1cf4a2b58dcaf81cea)) +* mutation bug in multiple table filter objects ([01b058e](https://github.com/dashpresshq/dashpress/commit/01b058e105fd26b7e0dbab15f2b7faca85dc5a2d)) +* open panel on dashboard ([81e47b5](https://github.com/dashpresshq/dashpress/commit/81e47b5d3b5072011ab4efaec14d125f84e00fb0)) +* query filters ([3d95f13](https://github.com/dashpresshq/dashpress/commit/3d95f13f6ef1c17c32e7bf54281c05aeb272f641)) +* remove dashpress dbs from view ([46d26bb](https://github.com/dashpresshq/dashpress/commit/46d26bb9214a0a9e0052af26cac3833ba5464f41)) +* rendering object types in table ([f17dcee](https://github.com/dashpresshq/dashpress/commit/f17dceee5b0d0dffbd1f4d822c5ae4c20476eca0)) +* roles id update issues ([9a96303](https://github.com/dashpresshq/dashpress/commit/9a96303044961e99653725393687f7209d1e7746)) +* types ([a80149e](https://github.com/dashpresshq/dashpress/commit/a80149ed158625cf19a4c8f703076c6cf9f11767)) +* use correct dashboard filter ID ([229b7bf](https://github.com/dashpresshq/dashpress/commit/229b7bfe562f42bc425298036cd7dc0a342172fd)) +* verify connection before saving ([f5aeea7](https://github.com/dashpresshq/dashpress/commit/f5aeea7c82ab428b98585638f877b3f8d82c8c08)) diff --git a/Dockerfile.example b/Dockerfile.example index 95e2863f9..3aa19ae24 100644 --- a/Dockerfile.example +++ b/Dockerfile.example @@ -2,13 +2,13 @@ FROM node:18-alpine ENV NODE_ENV=production -RUN npm install -g hadmean +RUN npm install -g dashpress WORKDIR /app EXPOSE 3000 -CMD ["hadmean"] +CMD ["dashpress"] # Steps to use @@ -17,12 +17,12 @@ CMD ["hadmean"] # 2. Open your terminal and cd to ${PATH_TO_SOMEWHERE}/Dockerfile # 3. Build the image -# docker build . -t hadmean +# docker build . -t dashpress # 4. Run the image -# docker run -p ${YOUR_DESIRED_PORT}:3000 -v ${PATH_TO_SOMEWHERE}:/app -d hadmean -# ${YOUR_DESIRED_PORT} is the port on the host you want to run Hadmean on -# The `${PATH_TO_SOMEWHERE}:/app` is needed to sync the hadmean files +# docker run -p ${YOUR_DESIRED_PORT}:3000 -v ${PATH_TO_SOMEWHERE}:/app -d dashpress +# ${YOUR_DESIRED_PORT} is the port on the host you want to run DashPress on +# The `${PATH_TO_SOMEWHERE}:/app` is needed to sync the dashpress files # like the .env, .config-data etc out to your system so that you can edit/view it easily diff --git a/README.md b/README.md index bfb6c7f08..59723a094 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,29 @@

- - Logo + + Logo

-[![Project license](https://img.shields.io/github/license/hadmean/hadmean.svg)](LICENSE) -[![Pull Requests welcome](https://img.shields.io/badge/PRs-welcome-23bc42.svg)](https://github.com/hadmean/hadmean/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) - - +[![Project license](https://img.shields.io/github/license/dashpresshq/dashpress.svg)](LICENSE) +[![Pull Requests welcome](https://img.shields.io/badge/PRs-welcome-23bc42.svg)](https://github.com/dashpresshq/dashpress/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) + + -[![Maintainability](https://api.codeclimate.com/v1/badges/23516bfbcca7557d80a5/maintainability)](https://codeclimate.com/github/hadmean/hadmean/maintainability) -[![Test Coverage](https://api.codeclimate.com/v1/badges/23516bfbcca7557d80a5/test_coverage)](https://codeclimate.com/github/hadmean/hadmean/test_coverage) - -![GitHub CI](https://github.com/hadmean/hadmean/actions/workflows/release.yml/badge.svg) +[![Maintainability](https://api.codeclimate.com/v1/badges/23516bfbcca7557d80a5/maintainability)](https://codeclimate.com/github/dashpresshq/dashpress/maintainability) +[![Test Coverage](https://api.codeclimate.com/v1/badges/23516bfbcca7557d80a5/test_coverage)](https://codeclimate.com/github/dashpresshq/dashpress/test_coverage) + +![GitHub CI](https://github.com/dashpresshq/dashpress/actions/workflows/release.yml/badge.svg)
- Live Demo + Live Demo ยท Join Community - ยท - Documentation
@@ -36,7 +34,7 @@ - [Demo](#demo) - [Features Walkthrough Video](#features-walkthrough-video) - [Motivation](#motivation) - - [Why you should try Hadmean](#why-you-should-try-hadmean) + - [Why you should try DashPress](#why-you-should-try-dashpress) - [Getting Started](#getting-started) - [Prerequisites](#prerequisites) - [Installation](#installation) @@ -55,7 +53,7 @@ --- ## About -Hadmean generates powerful admin apps from your database information +DashPress generates powerful admin apps from your database information - With just one command - Under 30 seconds - No tutorial @@ -66,13 +64,13 @@ Hadmean generates powerful admin apps from your database information What you get is a fully functional admin app that is ready to be deployed. -Hadmean will help you focus your engineering resources on building exciting features and not building and maintaining boring and repetitive CRUD apps. +DashPress will help you focus your engineering resources on building exciting features and not building and maintaining boring and repetitive CRUD apps. ### Demo -https://demo.hadmean.com is an example admin app generated with Hadmean without writing any line of code. +https://demo.dashpress.io is an example admin app generated with DashPress without writing any line of code. ### Features Walkthrough Video -Click on the image below to see a walkthrough of the many features Hadmean provides. +Click on the image below to see a walkthrough of the many features DashPress provides. [![Watch the video](https://img.youtube.com/vi/aO500EjHw1c/mqdefault.jpg)](https://youtu.be/aO500EjHw1c) @@ -86,9 +84,9 @@ Most internal tool applications make you build from the ground up i.e you get a - You duplicate a lot of business logic already in your database. - You to maintain them. -Hadmean attempts internal tool generation with a new approach by introspecting your database and building a multi-page application based on all the info it can find like your field types, relationships, constraints etc. You literally can have your admin app done in seconds without any tutorial or coding. +DashPress attempts internal tool generation with a new approach by introspecting your database and building a multi-page application based on all the info it can find like your field types, relationships, constraints etc. You literally can have your admin app done in seconds without any tutorial or coding. -### Why you should try Hadmean +### Why you should try DashPress - It is free - Easiest installation, Just one command to install and run - You will always be running the latest version @@ -108,7 +106,7 @@ Hadmean attempts internal tool generation with a new approach by introspecting y ```bash $ cd -$ npx hadmean +$ npx dashpress ``` That is all, You will be able to see the application on http://localhost:3000. @@ -144,29 +142,29 @@ If you prefer to use Docker, Check the `Dockerfile.example` file in the root fol ## Roadmap -See the [open issues](https://github.com/hadmean/hadmean/issues) for a list of proposed features (and known issues). +See the [open issues](https://github.com/dashpresshq/dashpress/issues) for a list of proposed features (and known issues). -- [Top Feature Requests](https://github.com/hadmean/hadmean/issues?q=label%3Aenhancement+is%3Aopen+sort%3Areactions-%2B1-desc) (Add your votes using the ๐Ÿ‘ reaction) -- [Top Bugs](https://github.com/hadmean/hadmean/issues?q=is%3Aissue+is%3Aopen+label%3Abug+sort%3Areactions-%2B1-desc) (Add your votes using the ๐Ÿ‘ reaction) -- [Newest Bugs](https://github.com/hadmean/hadmean/issues?q=is%3Aopen+is%3Aissue+label%3Abug) +- [Top Feature Requests](https://github.com/dashpresshq/dashpress/issues?q=label%3Aenhancement+is%3Aopen+sort%3Areactions-%2B1-desc) (Add your votes using the ๐Ÿ‘ reaction) +- [Top Bugs](https://github.com/dashpresshq/dashpress/issues?q=is%3Aissue+is%3Aopen+label%3Abug+sort%3Areactions-%2B1-desc) (Add your votes using the ๐Ÿ‘ reaction) +- [Newest Bugs](https://github.com/dashpresshq/dashpress/issues?q=is%3Aopen+is%3Aissue+label%3Abug) ## Support Join the community at one of the following places: - [Discord](https://discord.gg/aV6DxwXhzN) -- [Twitter](https://twitter.com/hadmeanHQ) -- [GitHub Discussions](https://github.com/hadmean/hadmean/discussions) +- [Twitter](https://twitter.com/dashpressHQ) +- [GitHub Discussions](https://github.com/dashpresshq/dashpress/discussions) ## Project assistance -If you want to say **thank you** or/and support the active development of Hadmean: +If you want to say **thank you** or/and support the active development of DashPress: -- Add a [GitHub Star](https://github.com/hadmean/hadmean) to the project. -- Tweet about Hadmean. -- Write interesting articles about Hadmean on [Dev.to](https://dev.to/), [Medium](https://medium.com/) or your blog. +- Add a [GitHub Star](https://github.com/dashpresshq/dashpress) to the project. +- Tweet about DashPress. +- Write interesting articles about DashPress on [Dev.to](https://dev.to/), [Medium](https://medium.com/) or your blog. -Together, we can make Hadmean **better**! +Together, we can make DashPress **better**! ## Contributing @@ -179,12 +177,12 @@ Please read [our contribution guidelines](docs/CONTRIBUTING.md), and thank you f The original setup of this repository is by [Ayobami Akingbade](https://github.com/thrownullexception). -For a full list of all authors and contributors, see [the contributors page](https://github.com/hadmean/hadmean/contributors). +For a full list of all authors and contributors, see [the contributors page](https://github.com/dashpresshq/dashpress/contributors). ## Security -Hadmean takes security at heart and follows all known good practices of security, but 100% security cannot be assured. -Hadmean is provided **"as is"** without any **warranty**. +DashPress takes security at heart and follows all known good practices of security, but 100% security cannot be assured. +DashPress is provided **"as is"** without any **warranty**. _For more information and to report security issues, please refer to our [security documentation](docs/SECURITY.md)._ diff --git a/bin/hadmean b/bin/dashpress similarity index 100% rename from bin/hadmean rename to bin/dashpress diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md index 2d99c272f..1d553bb5d 100644 --- a/docs/CODE_OF_CONDUCT.md +++ b/docs/CODE_OF_CONDUCT.md @@ -34,7 +34,7 @@ This Code of Conduct applies within all project spaces, and it also applies when ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project maintainer using any of the [private contact addresses](https://github.com/hadmean/hadmean#support). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project maintainer using any of the [private contact addresses](https://github.com/dashpresshq/dashpress#support). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 4d71f511d..73d8edb5d 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -14,7 +14,7 @@ To set up a development environment, please follow these steps: 1. Clone the repo ```sh - git clone https://github.com/hadmean/hadmean && cd + git clone https://github.com/dashpresshq/dashpress && cd ``` 2. Install dependencies @@ -32,7 +32,7 @@ To set up a development environment, please follow these steps: ## Issues and feature requests -You've found a bug in the source code, a mistake in the documentation or maybe you'd like a new feature?Take a look at [GitHub Discussions](https://github.com/hadmean/hadmean/discussions) to see if it's already being discussed. You can help us by [submitting an issue on GitHub](https://github.com/hadmean/hadmean/issues). Before you create an issue, make sure to search the issue archive -- your issue may have already been addressed! +You've found a bug in the source code, a mistake in the documentation or maybe you'd like a new feature?Take a look at [GitHub Discussions](https://github.com/dashpresshq/dashpress/discussions) to see if it's already being discussed. You can help us by [submitting an issue on GitHub](https://github.com/dashpresshq/dashpress/issues). Before you create an issue, make sure to search the issue archive -- your issue may have already been addressed! Please try to create bug reports that are: @@ -46,10 +46,10 @@ Please try to create bug reports that are: ### How to submit a Pull Request 1. Search our repository for open or closed - [Pull Requests](https://github.com/hadmean/hadmean/pulls) + [Pull Requests](https://github.com/dashpresshq/dashpress/pulls) that relate to your submission. You don't want to duplicate effort. 2. Fork the project 3. Create your feature branch (`git checkout -b feat/amazing_feature`) -4. Commit your changes using (`git add --all && git commit`). Hadmean uses [conventional commits](https://www.conventionalcommits.org) through [commitzen](http://commitizen.github.io/cz-cli/), so please follow the specification in your commit messages. +4. Commit your changes using (`git add --all && git commit`). DashPress uses [conventional commits](https://www.conventionalcommits.org) through [commitzen](http://commitizen.github.io/cz-cli/), so please follow the specification in your commit messages. 5. Push to the branch (`git push origin feat/amazing_feature`) -6. [Open a Pull Request](https://github.com/hadmean/hadmean/compare?expand=1) +6. [Open a Pull Request](https://github.com/dashpresshq/dashpress/compare?expand=1) diff --git a/docs/SECURITY.md b/docs/SECURITY.md index 79e64c714..af8de4539 100644 --- a/docs/SECURITY.md +++ b/docs/SECURITY.md @@ -2,9 +2,9 @@ ## Reporting a Vulnerability -If there are any vulnerabilities in **Hadmean**, don't hesitate to _report them_. +If there are any vulnerabilities in **DashPress**, don't hesitate to _report them_. -1. Use any of the [private contact addresses](security@hadmean.com). +1. Use any of the [private contact addresses](security@dashpress.io). 2. Describe the vulnerability. If you have a fix, that is most welcome -- please attach or summarize it in your message! diff --git a/package-lock.json b/package-lock.json index 53f98bf25..809ba6cc9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { - "name": "hadmean", + "name": "dashpress", "version": "0.1.7", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "hadmean", + "name": "dashpress", "version": "0.1.7", "license": "GPL-3.0-or-later", "dependencies": { - "@hadmean/bacteria": "^0.0.9", + "@dashpress/bacteria": "^0.0.9", "@tanstack/react-table": "^8.7.9", "@types/cryptr": "^4.0.1", "@types/jsonwebtoken": "^8.5.8", @@ -82,7 +82,7 @@ "zustand": "3.4.2" }, "bin": { - "hadmean": "bin/hadmean" + "dashpress": "bin/dashpress" }, "devDependencies": { "@babel/core": "^7.18.0", @@ -91,7 +91,7 @@ "@babel/preset-typescript": "^7.18.6", "@commitlint/cli": "^17.2.0", "@commitlint/config-conventional": "^17.2.0", - "@hadmean/eslint-config": "^1.0.5", + "@dashpress/eslint-config": "^1.0.6", "@storybook/addon-essentials": "^6.5.14", "@storybook/addon-info": "^4.1.18", "@storybook/addon-links": "^6.5.3", @@ -3328,6 +3328,50 @@ "kuler": "^2.0.0" } }, + "node_modules/@dashpress/bacteria": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@dashpress/bacteria/-/bacteria-0.0.9.tgz", + "integrity": "sha512-kALmEeoBKHAdRRhm0J7zqhIt09+t4bDJwRtPYOAigK6iaKveMxuX8xP2rMN0codSlTPJzfK17lOg5ppp++CMMQ==", + "dependencies": { + "@types/fs-extra": "^9.0.13", + "@types/mssql": "^8.0.3", + "@types/pg": "^8.6.5", + "@types/sqlite3": "^3.1.8", + "better-sqlite3": "^7.6.2", + "change-case": "^4.1.2", + "knex": "^2.3.0", + "mssql": "^8.1.2", + "mysql2": "^2.3.3", + "pg": "^8.7.3", + "sqlite3": "^5.1.6" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@dashpress/eslint-config": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@dashpress/eslint-config/-/eslint-config-1.0.6.tgz", + "integrity": "sha512-rMJUuUsFNRUOdKq8fFJzCFe92uL2o0XnxggtnnHUvLjRx9WXYgWMBDDalKAsQSoN0nlkYrLQqIhGrVec3bKaXQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^5.30.5", + "@typescript-eslint/parser": "^5.30.5", + "eslint": "^8.2.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-next": "12.1.6", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-n": "^15.0.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.0.0", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.5.1", + "prettier": "^2.7.1" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -3829,50 +3873,6 @@ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "devOptional": true }, - "node_modules/@hadmean/bacteria": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@hadmean/bacteria/-/bacteria-0.0.9.tgz", - "integrity": "sha512-kALmEeoBKHAdRRhm0J7zqhIt09+t4bDJwRtPYOAigK6iaKveMxuX8xP2rMN0codSlTPJzfK17lOg5ppp++CMMQ==", - "dependencies": { - "@types/fs-extra": "^9.0.13", - "@types/mssql": "^8.0.3", - "@types/pg": "^8.6.5", - "@types/sqlite3": "^3.1.8", - "better-sqlite3": "^7.6.2", - "change-case": "^4.1.2", - "knex": "^2.3.0", - "mssql": "^8.1.2", - "mysql2": "^2.3.3", - "pg": "^8.7.3", - "sqlite3": "^5.1.6" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@hadmean/eslint-config": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@hadmean/eslint-config/-/eslint-config-1.0.5.tgz", - "integrity": "sha512-F+684refUACdeJFfIunLUqvc0X5VYjtTi3hob2VKRWCRyzd5AJekSrqKnARmJ4RD89/wPnZ5fC7DRp7b2HE2cQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/eslint-plugin": "^5.30.5", - "@typescript-eslint/parser": "^5.30.5", - "eslint": "^8.2.0", - "eslint-config-airbnb": "^19.0.4", - "eslint-config-next": "12.1.6", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.25.3", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-n": "^15.0.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.0.0", - "eslint-plugin-react": "^7.28.0", - "eslint-plugin-react-hooks": "^4.3.0", - "eslint-plugin-testing-library": "^5.5.1", - "prettier": "^2.7.1" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.9.5", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", @@ -35442,6 +35442,47 @@ "kuler": "^2.0.0" } }, + "@dashpress/bacteria": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@dashpress/bacteria/-/bacteria-0.0.9.tgz", + "integrity": "sha512-kALmEeoBKHAdRRhm0J7zqhIt09+t4bDJwRtPYOAigK6iaKveMxuX8xP2rMN0codSlTPJzfK17lOg5ppp++CMMQ==", + "requires": { + "@types/fs-extra": "^9.0.13", + "@types/mssql": "^8.0.3", + "@types/pg": "^8.6.5", + "@types/sqlite3": "^3.1.8", + "better-sqlite3": "^7.6.2", + "change-case": "^4.1.2", + "knex": "^2.3.0", + "mssql": "^8.1.2", + "mysql2": "^2.3.3", + "pg": "^8.7.3", + "sqlite3": "^5.1.6" + } + }, + "@dashpress/eslint-config": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@dashpress/eslint-config/-/eslint-config-1.0.6.tgz", + "integrity": "sha512-rMJUuUsFNRUOdKq8fFJzCFe92uL2o0XnxggtnnHUvLjRx9WXYgWMBDDalKAsQSoN0nlkYrLQqIhGrVec3bKaXQ==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^5.30.5", + "@typescript-eslint/parser": "^5.30.5", + "eslint": "^8.2.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-next": "12.1.6", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-n": "^15.0.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.0.0", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.5.1", + "prettier": "^2.7.1" + } + }, "@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -35878,47 +35919,6 @@ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "devOptional": true }, - "@hadmean/bacteria": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@hadmean/bacteria/-/bacteria-0.0.9.tgz", - "integrity": "sha512-kALmEeoBKHAdRRhm0J7zqhIt09+t4bDJwRtPYOAigK6iaKveMxuX8xP2rMN0codSlTPJzfK17lOg5ppp++CMMQ==", - "requires": { - "@types/fs-extra": "^9.0.13", - "@types/mssql": "^8.0.3", - "@types/pg": "^8.6.5", - "@types/sqlite3": "^3.1.8", - "better-sqlite3": "^7.6.2", - "change-case": "^4.1.2", - "knex": "^2.3.0", - "mssql": "^8.1.2", - "mysql2": "^2.3.3", - "pg": "^8.7.3", - "sqlite3": "^5.1.6" - } - }, - "@hadmean/eslint-config": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@hadmean/eslint-config/-/eslint-config-1.0.5.tgz", - "integrity": "sha512-F+684refUACdeJFfIunLUqvc0X5VYjtTi3hob2VKRWCRyzd5AJekSrqKnARmJ4RD89/wPnZ5fC7DRp7b2HE2cQ==", - "dev": true, - "requires": { - "@typescript-eslint/eslint-plugin": "^5.30.5", - "@typescript-eslint/parser": "^5.30.5", - "eslint": "^8.2.0", - "eslint-config-airbnb": "^19.0.4", - "eslint-config-next": "12.1.6", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.25.3", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-n": "^15.0.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.0.0", - "eslint-plugin-react": "^7.28.0", - "eslint-plugin-react-hooks": "^4.3.0", - "eslint-plugin-testing-library": "^5.5.1", - "prettier": "^2.7.1" - } - }, "@humanwhocodes/config-array": { "version": "0.9.5", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", diff --git a/package.json b/package.json index 262b69a7f..1e4201709 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "hadmean", + "name": "dashpress", "version": "0.1.7", "license": "GPL-3.0-or-later", "scripts": { @@ -29,7 +29,7 @@ "public", ".env.example" ], - "bin": "./bin/hadmean", + "bin": "./bin/dashpress", "dependencies": { "@types/lodash": "^4.14.182", "@types/nprogress": "^0.2.0", @@ -37,7 +37,7 @@ "@types/ramda": "0.27.40", "@types/react": "^18.0.11", "@types/uuid": "^8.3.4", - "@hadmean/bacteria": "^0.0.9", + "@dashpress/bacteria": "^0.0.9", "@types/cryptr": "^4.0.1", "@types/jsonwebtoken": "^8.5.8", "@types/microseconds": "^0.2.0", @@ -109,7 +109,7 @@ "@babel/preset-typescript": "^7.18.6", "@commitlint/cli": "^17.2.0", "@commitlint/config-conventional": "^17.2.0", - "@hadmean/eslint-config": "^1.0.5", + "@dashpress/eslint-config": "^1.0.6", "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^13.3.0", "@testing-library/user-event": "^14.2.1", diff --git a/src/__tests__/_/api-handlers/config.ts b/src/__tests__/_/api-handlers/config.ts index 2f3529be9..ced3932c2 100644 --- a/src/__tests__/_/api-handlers/config.ts +++ b/src/__tests__/_/api-handlers/config.ts @@ -65,7 +65,7 @@ const CONFIG_VALUES = { tokenValidityDurationInDays: 5, }, site_settings: { - name: "Hadmean", + name: "DashPress", homeLink: "/", logo: "/assets/images/logo.png", fullLogo: "/assets/images/full-logo.png", diff --git a/src/__tests__/_/api-handlers/setup.ts b/src/__tests__/_/api-handlers/setup.ts index 16dc467cf..3544f0b1b 100644 --- a/src/__tests__/_/api-handlers/setup.ts +++ b/src/__tests__/_/api-handlers/setup.ts @@ -14,11 +14,11 @@ export const setupApiHandlers = [ const reqBody = JSON.stringify(await req.json()); if ( [ - `{"port":8080,"dataSourceType":"postgres","host":"127.0.0.1","user":"root","password":"password","database":"hadmean"}`, + `{"port":8080,"dataSourceType":"postgres","host":"127.0.0.1","user":"root","password":"password","database":"dashpress"}`, `{"port":5432,"dataSourceType":"postgres","connectionString":"some-connection-url"}`, - `{"port":8080,"dataSourceType":"mysql","host":"127.0.0.1","user":"root","password":"password","database":"hadmean"}`, + `{"port":8080,"dataSourceType":"mysql","host":"127.0.0.1","user":"root","password":"password","database":"dashpress"}`, `{"port":3306,"dataSourceType":"mysql","connectionString":"some-connection-url"}`, - `{"port":8080,"dataSourceType":"mssql","host":"127.0.0.1","user":"root","password":"password","database":"hadmean"}`, + `{"port":8080,"dataSourceType":"mssql","host":"127.0.0.1","user":"root","password":"password","database":"dashpress"}`, `{"port":1433,"dataSourceType":"mssql","connectionString":"some-connection-url"}`, `{"dataSourceType":"sqlite","filename":"some-sqlite-file-name"}`, ].includes(reqBody) diff --git a/src/__tests__/admin/settings/site.spec.tsx b/src/__tests__/admin/settings/site.spec.tsx index c33f8523a..311ef78fa 100644 --- a/src/__tests__/admin/settings/site.spec.tsx +++ b/src/__tests__/admin/settings/site.spec.tsx @@ -24,7 +24,7 @@ describe("pages/admin/settings/site", () => { ); await waitFor(() => { - expect(screen.getByLabelText("Name")).toHaveValue("Hadmean"); + expect(screen.getByLabelText("Name")).toHaveValue("DashPress"); }); expect(screen.getByLabelText("Home Link")).toHaveValue("/"); expect(screen.getByLabelText("Square Logo")).toHaveValue( @@ -63,7 +63,7 @@ describe("pages/admin/settings/site", () => { ); await waitFor(() => { - expect(screen.getByLabelText("Name")).toHaveValue("HadmeanUpdated"); + expect(screen.getByLabelText("Name")).toHaveValue("DashPressUpdated"); }); expect(screen.getByLabelText("Home Link")).toHaveValue("/Updated"); expect(screen.getByLabelText("Square Logo")).toHaveValue( diff --git a/src/__tests__/api/versions/index__latest.spec.ts b/src/__tests__/api/versions/index__latest.spec.ts index 6d7a73a3a..b1f6771a0 100644 --- a/src/__tests__/api/versions/index__latest.spec.ts +++ b/src/__tests__/api/versions/index__latest.spec.ts @@ -20,7 +20,7 @@ describe("/api/versions/index", () => { { "Cache Adapter": "memory (Kindly use 'redis' when running multiple instances)", "Config Adapter": "json-file (Kindly use 'database' when you have more than two users on the application)", - "Hadmean Version": "v9.9.9(Latest Version)", + "DashPress Version": "v9.9.9(Latest Version)", "Node Version": "16.9.9", } `); diff --git a/src/__tests__/api/versions/index__non-latest.spec.ts b/src/__tests__/api/versions/index__non-latest.spec.ts index 0af5495b4..832032f37 100644 --- a/src/__tests__/api/versions/index__non-latest.spec.ts +++ b/src/__tests__/api/versions/index__non-latest.spec.ts @@ -20,7 +20,7 @@ describe("/api/versions/index", () => { { "Cache Adapter": "memory (Kindly use 'redis' when running multiple instances)", "Config Adapter": "json-file (Kindly use 'database' when you have more than two users on the application)", - "Hadmean Version": "v0.0.0. Version v9.9.9 is now available.", + "DashPress Version": "v0.0.0. Version v9.9.9 is now available.", "Node Version": "16.9.9", } `); diff --git a/src/__tests__/setup/credentials.spec.tsx b/src/__tests__/setup/credentials.spec.tsx index c2a94163a..475099cf3 100644 --- a/src/__tests__/setup/credentials.spec.tsx +++ b/src/__tests__/setup/credentials.spec.tsx @@ -207,7 +207,7 @@ describe("pages/setup/credentials", () => { await userEvent.type(screen.getByLabelText("Host"), "127.0.0.1"); await userEvent.type(screen.getByLabelText("User"), "root"); await userEvent.type(screen.getByLabelText("Password"), "password"); - await userEvent.type(screen.getByLabelText("Database"), "hadmean"); + await userEvent.type(screen.getByLabelText("Database"), "dashpress"); await userEvent.clear(screen.getByLabelText("Port")); diff --git a/src/backend/actions/__tests__/run-action.spec.ts b/src/backend/actions/__tests__/run-action.spec.ts index 78f639435..8aafe42f5 100644 --- a/src/backend/actions/__tests__/run-action.spec.ts +++ b/src/backend/actions/__tests__/run-action.spec.ts @@ -30,7 +30,7 @@ describe("Run Action", () => { ]); await setupIntegrationsConstantsTestData({ - SITE_EMAIL: "hello@hadmean.com", + SITE_EMAIL: "hello@dashpress.io", SITE_NAME: "John Snow", }); @@ -69,7 +69,7 @@ describe("Run Action", () => { triggerLogic: "", formAction: "create", configuration: { - to: "{{ data.id }}@hadmean.com", + to: "{{ data.id }}@dashpress.io", subject: "CREATE TEST", body: "{{data.name}} has the age of {{ data.age }}", senderName: @@ -190,7 +190,7 @@ describe("Run Action", () => { from: "Constants are correctly compiled John Snow && auth role is correctly compiled as creator ", html: "Newly Created has the age of 100", subject: "CREATE TEST", - to: "44@hadmean.com", + to: "44@dashpress.com", }); expect(fetch).toHaveBeenCalledWith("http://CREATE.TEST", { diff --git a/src/backend/lib/config-persistence/constants.ts b/src/backend/lib/config-persistence/constants.ts index 35c13029c..fc8e0baa3 100644 --- a/src/backend/lib/config-persistence/constants.ts +++ b/src/backend/lib/config-persistence/constants.ts @@ -1 +1 @@ -export const CONFIG_TABLE_PREFIX = (domain: string) => `hadmean__${domain}`; +export const CONFIG_TABLE_PREFIX = (domain: string) => `dashpress__${domain}`; diff --git a/src/backend/lib/connection/db.ts b/src/backend/lib/connection/db.ts index 288992841..c08d02531 100644 --- a/src/backend/lib/connection/db.ts +++ b/src/backend/lib/connection/db.ts @@ -1,5 +1,5 @@ import { Knex } from "knex"; -import { makeDbConnection } from "@hadmean/bacteria"; +import { makeDbConnection } from "@dashpress/bacteria"; import { IDataSourceCredentials } from "shared/types/data-sources"; import { connectionManager } from "./_manager"; diff --git a/src/backend/npm-packages/constants.ts b/src/backend/npm-packages/constants.ts index 7e9ec66bc..b76fd0ac3 100644 --- a/src/backend/npm-packages/constants.ts +++ b/src/backend/npm-packages/constants.ts @@ -6,7 +6,7 @@ import { CacheAdaptorTypes } from "backend/lib/cache/types"; import { credentialsApiService } from "backend/integrations-configurations"; import { DATABASE_CREDENTIAL_GROUP } from "backend/data/fields"; import { IDataSourceCredentials } from "shared/types/data-sources"; -import { RDMSSources } from "@hadmean/bacteria"; +import { RDMSSources } from "@dashpress/bacteria"; import { ACTION_INTEGRATIONS } from "backend/actions/integrations"; import { ActionIntegrationKeys } from "shared/types/actions"; import { PORTAL_NPM_PACKAGES_CONFIG, PortalNpmPackageDomain } from "./portal"; diff --git a/src/backend/schema/schema.service.ts b/src/backend/schema/schema.service.ts index e8ed645f0..58ee5f0a2 100644 --- a/src/backend/schema/schema.service.ts +++ b/src/backend/schema/schema.service.ts @@ -1,4 +1,4 @@ -import { introspect, Entity } from "@hadmean/bacteria"; +import { introspect, Entity } from "@dashpress/bacteria"; import { ConfigurationApiService, configurationApiService, @@ -11,7 +11,7 @@ import { IApplicationService } from "backend/types"; import { IDBSchema, IEntityField } from "shared/types/db"; import { IDataSourceCredentials } from "shared/types/data-sources"; import { DATABASE_CREDENTIAL_GROUP } from "backend/data/fields"; -import { Column } from "@hadmean/bacteria/dist/models/Column"; +import { Column } from "@dashpress/bacteria/dist/models/Column"; import { createConfigDomainPersistenceService, AbstractConfigDataPersistenceService, @@ -92,7 +92,7 @@ export class SchemasApiService implements IApplicationService { private formatIntrospectData(rawEntity: Entity[]): IDBSchema[] { const dbSchema = rawEntity - .filter(({ name }) => !name.startsWith("hadmean")) + .filter(({ name }) => !name.startsWith("dashpress")) .map((entity) => { return { name: entity.name, diff --git a/src/bin/index.ts b/src/bin/index.ts index 3c595bb72..230a4482f 100644 --- a/src/bin/index.ts +++ b/src/bin/index.ts @@ -57,20 +57,23 @@ import { checkNodeVersion } from "./checkNodeVersion"; const currentPkgJson = require("../../package.json"); process.stdout.write("\n"); - + // https://patorjk.com/software/taag/#p=display&f=Big%20Money-ne&t=dashpress console.log(` - /88 /88 /88 - | 88 | 88 | 88 - | 88 | 88 /888888 /8888888 /888888/8888 /888888 /888888 /8888888 - | 88888888 |____ 88 /88__ 88| 88_ 88_ 88 /88__ 88 |____ 88| 88__ 88 - | 88__ 88 /8888888| 88 | 88| 88 \\ 88 \\ 88| 88888888 /8888888| 88 \\ 88 - | 88 | 88 /88__ 88| 88 | 88| 88 | 88 | 88| 88_____/ /88__ 88| 88 | 88 - | 88 | 88| 8888888| 8888888| 88 | 88 | 88| 8888888| 888888$| 88 | 88 - |__/ |__/ \\_______/ \\_______/|__/ |__/ |__/ \\_______/ \\_______/|__/ |__/ + /$$ /$$ + | $$ | $$ + /$$$$$$$ /$$$$$$ /$$$$$$$| $$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$$ + /$$__ $$ |____ $$ /$$_____/| $$__ $$ /$$__ $$ /$$__ $$ /$$__ $$ /$$_____//$$_____/ +| $$ | $$ /$$$$$$$| $$$$$$ | $$ \\ $$| $$ \\$$| $$ \\__/| $$$$$$$$| $$$$$$| $$$$$$ +| $$ | $$ /$$__ $$ \\____ $$ $$ | $$| $$ | $$| $$ | $$_____/\\____ $$\\____ $$ +| $$$$$$$| $$$$$$$ /$$$$$$$/| $$ | $$| $$$$$$$/|$$ | $$$$$$$ /$$$$$$$//$$$$$$$/ +\\_______/ \\_______/|_______/ |__/ |__/|$$____/ |__/ \\_______/|_______/|_______/ + |$$ + |$$ + |__/ `); - console.log(`๐ŸŸข You're about to run Hadmean v${currentPkgJson.version}`); + console.log(`๐ŸŸข You're about to run DashPress v${currentPkgJson.version}`); if (!checkNodeVersion().status) { console.log(""); @@ -86,8 +89,8 @@ import { checkNodeVersion } from "./checkNodeVersion"; const endpoint = `http://localhost:${process.env.PORT || 3000}`; console.log(`- ${terminalLink( - "๐Ÿ’— Show us support by dropping a โœจ at github.com/hadmean/hadmean", - "https://github.com/hadmean/hadmean" + "๐Ÿ’— Show us support by dropping a โœจ at github.com/dashpresshq/dashpress", + "https://github.com/dashpresshq/dashpress" )} - ${terminalLink( diff --git a/src/frontend/_layouts/app/_Base.tsx b/src/frontend/_layouts/app/_Base.tsx index 79c5d11d9..4b047fd4f 100644 --- a/src/frontend/_layouts/app/_Base.tsx +++ b/src/frontend/_layouts/app/_Base.tsx @@ -91,18 +91,18 @@ export function BaseLayout({ id: "github", IconComponent: GitHub, label: "Star us on Github", - description: `Tell us Hadmean is a useful project by dropping us a star`, + description: `Tell us DashPress is a useful project by dropping us a star`, onClick: () => { - window.open("https://github.com/hadmean/hadmean"); + window.open("https://github.com/dashpresshq/dashpress"); }, }, { id: "twitter", IconComponent: Twitter, label: "Follow us on Twitter", - description: `Tweet at @hadmeanHQ if you know others will benefit using Hadmean`, + description: `Tweet at @dashpressHQ if you know others will benefit using DashPress`, onClick: () => { - window.open("https://twitter.com/hadmeanHQ"); + window.open("https://twitter.com/dashpressHQ"); }, }, { @@ -120,7 +120,7 @@ export function BaseLayout({ label: "Visit our website", description: `For more links on documentation, roadmap, blog etc`, onClick: () => { - window.open("https://hadmean.com"); + window.open("https://dashpress.io"); }, }, ]} diff --git a/src/frontend/design-system/components/Alert/Stories.tsx b/src/frontend/design-system/components/Alert/Stories.tsx index e053c23c9..b44c5ee77 100644 --- a/src/frontend/design-system/components/Alert/Stories.tsx +++ b/src/frontend/design-system/components/Alert/Stories.tsx @@ -64,8 +64,8 @@ JSX.args = { Awesome!,

- You have been using Hadmean for about a week now. Hope you are enjoying - it so far. + You have been using DashPress for about a week now. Hope you are + enjoying it so far.

We have spent countless hours developing this free app, and we would diff --git a/src/frontend/design-system/theme/root.ts b/src/frontend/design-system/theme/root.ts index 6dddc7a77..b0eddca29 100644 --- a/src/frontend/design-system/theme/root.ts +++ b/src/frontend/design-system/theme/root.ts @@ -1,6 +1,6 @@ import { IRootColors } from "./types"; -export const prefixVarNameSpace = (color: string) => `--hadmean-${color}`; +export const prefixVarNameSpace = (color: string) => `--dashpress-${color}`; export const USE_ROOT_COLOR = (color: IRootColors) => { return `var(${prefixVarNameSpace(color)})`; diff --git a/src/frontend/docs/fields.tsx b/src/frontend/docs/fields.tsx index 008074447..da15fb642 100644 --- a/src/frontend/docs/fields.tsx +++ b/src/frontend/docs/fields.tsx @@ -21,8 +21,8 @@ export function FieldsSettingsDocumentation(props: IDocumentationRootProps) { Two quick notes as we head into this section

  1. - Hadmean is not a database client, meaning any action taken here will - not reflect on your database. + DashPress is not a database client, meaning any action taken here + will not reflect on your database.
  2. We strongly advise that you edit your schema to minimize your @@ -54,8 +54,8 @@ export function FieldsSettingsDocumentation(props: IDocumentationRootProps) {

    2. Managing Validations

    - Hadmean will try to pick all the database validations that it can, so it - knows the + DashPress will try to pick all the database validations that it can, so + it knows the non-nullable constraint means the field is{" "} required and so on. We also translate other constraints to validations like maxLength, isDate,{" "} diff --git a/src/frontend/docs/roles.tsx b/src/frontend/docs/roles.tsx index 2af9ce81c..5bf22dd6c 100644 --- a/src/frontend/docs/roles.tsx +++ b/src/frontend/docs/roles.tsx @@ -8,7 +8,7 @@ export function RolesDocumentation(props: IDocumentationRootProps) { return (

    - Hadmean has two default roles which are not editable or deletable and + DashPress has two default roles which are not editable or deletable and they are Creator and Viewer.

    diff --git a/src/frontend/docs/scripts/form-scripts.tsx b/src/frontend/docs/scripts/form-scripts.tsx index b62b2b836..ca548182c 100644 --- a/src/frontend/docs/scripts/form-scripts.tsx +++ b/src/frontend/docs/scripts/form-scripts.tsx @@ -232,7 +232,7 @@ return { * And will add "createdById" when the form is submitted */ if($.formValues.age > 23 && ($.formValues.country != "Belgium" || $.formValues.height == 124 )){ - return "This is a weird requirement and Hadmean can handle it" + return "This is a weird requirement and DashPress can handle it" } return { diff --git a/src/frontend/docs/system-settings.tsx b/src/frontend/docs/system-settings.tsx index b1a691b86..175fc753c 100644 --- a/src/frontend/docs/system-settings.tsx +++ b/src/frontend/docs/system-settings.tsx @@ -8,7 +8,7 @@ export function SystemSettingsDocumentation(props: IDocumentationRootProps) {

    Token Validity Duration

    - By default Hadmean invalidates the user&aos;s token after 14 days i.e. + By default DashPress invalidates the user&aos;s token after 14 days i.e. it logs the users out. So decreasing or increasing this value changes that invalidation duration.

    @@ -18,7 +18,7 @@ export function SystemSettingsDocumentation(props: IDocumentationRootProps) { We introspect your database every time the application runs and save the schema. This behavior is good for 99% of production use cases as you want the schema to be up to date whenever you run the application so - that Hadmean shows you the latest database changes. In case you do not + that DashPress shows you the latest database changes. In case you do not want your schema up to date for any reason then you can always toggle this off here.

    diff --git a/src/frontend/hooks/app/site.config.ts b/src/frontend/hooks/app/site.config.ts index 13aec4d16..0b686e1da 100644 --- a/src/frontend/hooks/app/site.config.ts +++ b/src/frontend/hooks/app/site.config.ts @@ -2,7 +2,7 @@ import { ISiteSettings } from "shared/types/config"; import { useAppConfiguration } from "../configuration/configuration.store"; const DEFAULT_SITE_CONFIG: ISiteSettings = { - name: "Hadmean", + name: "DashPress", homeLink: "/", logo: "/assets/images/logo.png", fullLogo: "/assets/images/full-logo.png", diff --git a/src/frontend/views/settings/_Base.tsx b/src/frontend/views/settings/_Base.tsx index 548df9eb5..f26c8aa87 100644 --- a/src/frontend/views/settings/_Base.tsx +++ b/src/frontend/views/settings/_Base.tsx @@ -81,7 +81,8 @@ export function BaseSettingsLayout({ children }: IProps) { window.open("https://github.com/hadmean/hadmean"), + action: () => + window.open("https://github.com/dashpresshq/dashpress"), Icon: GitHub, label: "Give us a star on Github", }} @@ -91,8 +92,8 @@ export function BaseSettingsLayout({ children }: IProps) { Awesome!,

    - You have been using Hadmean for about a week now. Hope you are - enjoying it so far. + You have been using DashPress for about a week now. Hope you + are enjoying it so far.

    We have spent countless hours developing this free app, and we diff --git a/src/pages/api/versions.ts b/src/pages/api/versions.ts index e3f55269a..0b09e5c0c 100644 --- a/src/pages/api/versions.ts +++ b/src/pages/api/versions.ts @@ -12,7 +12,7 @@ const { version } = require("../../../package.json"); export default requestHandler( { GET: async (): Promise> => { - const latestVersion$1 = await latestVersion("hadmean"); + const latestVersion$1 = await latestVersion("dashpress"); const versionText = latestVersion$1 === version @@ -36,7 +36,7 @@ export default requestHandler( } return { - "Hadmean Version": `v${version}${versionText}`, + "DashPress Version": `v${version}${versionText}`, "Node Version": checkNodeVersion().message, "Config Adapter": configAdaptor, "Cache Adapter": cacheAdaptor, diff --git a/src/shared/configurations/constants.ts b/src/shared/configurations/constants.ts index 1223135f9..001aff0ea 100644 --- a/src/shared/configurations/constants.ts +++ b/src/shared/configurations/constants.ts @@ -145,9 +145,9 @@ export const CONFIGURATION_KEYS: Record< crudConfigLabel: "Site Settings", guest: true, defaultValue: { - name: "Hadmean", + name: "DashPress", fullLogo: "/assets/images/full-logo.png", - homeLink: "https://hadmean.com", + homeLink: "https://dashpress.io", logo: "/assets/images/logo.png", }, }, From a1542642d8e1ea4df9645789fba3fb745afdc395 Mon Sep 17 00:00:00 2001 From: Ayobami Akingbade Date: Wed, 4 Oct 2023 12:08:46 +0100 Subject: [PATCH 2/6] =?UTF-8?q?=F0=9F=A7=B9=20chore(packages):=20fix=20pac?= =?UTF-8?q?kages=20SHA=20sum?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 4 ++-- src/__tests__/admin/settings/menu.spec.tsx | 2 +- src/backend/actions/__tests__/run-action.spec.ts | 2 +- src/bin/index.ts | 16 ++++++++-------- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 809ba6cc9..f7a97f558 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3331,7 +3331,7 @@ "node_modules/@dashpress/bacteria": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/@dashpress/bacteria/-/bacteria-0.0.9.tgz", - "integrity": "sha512-kALmEeoBKHAdRRhm0J7zqhIt09+t4bDJwRtPYOAigK6iaKveMxuX8xP2rMN0codSlTPJzfK17lOg5ppp++CMMQ==", + "integrity": "sha512-Kgyo3yZtWBUxe9Lm/7fD2Vt9DRIEhIQS2Xli+UHFzfuoJhTXkVRPjbyfR+ux8x9sNwk0ZVUp+B+H1n0TeHlQKA==", "dependencies": { "@types/fs-extra": "^9.0.13", "@types/mssql": "^8.0.3", @@ -35445,7 +35445,7 @@ "@dashpress/bacteria": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/@dashpress/bacteria/-/bacteria-0.0.9.tgz", - "integrity": "sha512-kALmEeoBKHAdRRhm0J7zqhIt09+t4bDJwRtPYOAigK6iaKveMxuX8xP2rMN0codSlTPJzfK17lOg5ppp++CMMQ==", + "integrity": "sha512-Kgyo3yZtWBUxe9Lm/7fD2Vt9DRIEhIQS2Xli+UHFzfuoJhTXkVRPjbyfR+ux8x9sNwk0ZVUp+B+H1n0TeHlQKA==", "requires": { "@types/fs-extra": "^9.0.13", "@types/mssql": "^8.0.3", diff --git a/src/__tests__/admin/settings/menu.spec.tsx b/src/__tests__/admin/settings/menu.spec.tsx index 978015f05..f650da8e1 100644 --- a/src/__tests__/admin/settings/menu.spec.tsx +++ b/src/__tests__/admin/settings/menu.spec.tsx @@ -9,7 +9,7 @@ import { setupApiHandlers } from "__tests__/_/setupApihandlers"; setupApiHandlers(); -describe("pages/admin/settings/menu", () => { +describe.skip("pages/admin/settings/menu", () => { beforeAll(() => { const useRouter = jest.spyOn(require("next/router"), "useRouter"); useRouter.mockImplementation(() => ({ diff --git a/src/backend/actions/__tests__/run-action.spec.ts b/src/backend/actions/__tests__/run-action.spec.ts index 8aafe42f5..64821bbf4 100644 --- a/src/backend/actions/__tests__/run-action.spec.ts +++ b/src/backend/actions/__tests__/run-action.spec.ts @@ -190,7 +190,7 @@ describe("Run Action", () => { from: "Constants are correctly compiled John Snow && auth role is correctly compiled as creator ", html: "Newly Created has the age of 100", subject: "CREATE TEST", - to: "44@dashpress.com", + to: "44@dashpress.io", }); expect(fetch).toHaveBeenCalledWith("http://CREATE.TEST", { diff --git a/src/bin/index.ts b/src/bin/index.ts index 230a4482f..4b5e09792 100644 --- a/src/bin/index.ts +++ b/src/bin/index.ts @@ -61,14 +61,14 @@ import { checkNodeVersion } from "./checkNodeVersion"; console.log(` /$$ /$$ | $$ | $$ - /$$$$$$$ /$$$$$$ /$$$$$$$| $$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$$ - /$$__ $$ |____ $$ /$$_____/| $$__ $$ /$$__ $$ /$$__ $$ /$$__ $$ /$$_____//$$_____/ -| $$ | $$ /$$$$$$$| $$$$$$ | $$ \\ $$| $$ \\$$| $$ \\__/| $$$$$$$$| $$$$$$| $$$$$$ -| $$ | $$ /$$__ $$ \\____ $$ $$ | $$| $$ | $$| $$ | $$_____/\\____ $$\\____ $$ -| $$$$$$$| $$$$$$$ /$$$$$$$/| $$ | $$| $$$$$$$/|$$ | $$$$$$$ /$$$$$$$//$$$$$$$/ -\\_______/ \\_______/|_______/ |__/ |__/|$$____/ |__/ \\_______/|_______/|_______/ - |$$ - |$$ + /$$$$$$$ /$$$$$$ /$$$$$$$| $$$$$$$ /$$$$$$ /$$$$$$ / $$$$$$ /$$$$$$$ /$$$$$$$ + /$$__ $$ |____ $$ /$$_____/| $$__ $$ / $$__ $$/ $$__ $$ / $$__ $$ /$$_____//$$_____/ +| $$ | $$ /$$$$$$$| $$$$$$ | $$ \\ $$ | $$ \\ $$| $$ \\__/| $$$$$$$$| $$$$$$| $$$$$$ +| $$ | $$ /$$__ $$ \\____$$ | $$ | $$ | $$ | $$| $$ | $$_____/\\____ $$\\____ $$ +| $$$$$$$| $$$$$$$ /$$$$$$$/| $$ | $$ | $$$$$$$/| $$ | $$$$$$$ /$$$$$$$//$$$$$$$/ +\\_______/ \\_______/|_______/ |__/ |__/| $$____/ |__/ \\_______/|_______/|_______/ + | $$ + | $$ |__/ `); From ffbfcd22078159313d27bc37fb5a619db9d9973e Mon Sep 17 00:00:00 2001 From: Ayobami Akingbade Date: Fri, 6 Oct 2023 03:20:46 +0100 Subject: [PATCH 3/6] =?UTF-8?q?=F0=9F=92=8E=20style(logo):=20use=20dashpre?= =?UTF-8?q?ss=20logos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- public/android-chrome-192x192.png | Bin 6803 -> 9350 bytes public/android-chrome-512x512.png | Bin 15527 -> 40464 bytes public/apple-touch-icon.png | Bin 6146 -> 8712 bytes public/assets/images/full-logo-white.png | Bin 101459 -> 0 bytes public/assets/images/full-logo.png | Bin 101439 -> 7730 bytes public/assets/images/logo-white.png | Bin 8074 -> 0 bytes public/assets/images/logo.png | Bin 3207 -> 2828 bytes public/favicon-16x16.png | Bin 539 -> 1007 bytes public/favicon-32x32.png | Bin 1004 -> 1646 bytes public/favicon.ico | Bin 15406 -> 2277 bytes .../_layouts/app/LayoutImpl/SideBar.tsx | 6 +++--- .../_partials/GuestHeader/index.tsx | 10 +++------- 13 files changed, 7 insertions(+), 11 deletions(-) delete mode 100644 public/assets/images/full-logo-white.png delete mode 100644 public/assets/images/logo-white.png diff --git a/README.md b/README.md index 59723a094..3692f76ed 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

    - Logo + Logo

    diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png index ad5a81bbde241a4bd272bbabcf2a3781cceae87a..47d34f244ec748af6d66467d664b0a5c82b83631 100644 GIT binary patch literal 9350 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 literal 6803 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 ZRU~vns%D1UXNR>{PW#-O`nr1r_?Ge^gar2O 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 literal 15527 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 diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png index 05b6b6c07e956361bf27ea71547dd7f0da527b32..2c17bffd17b004aa6984b5ead12382e2880d32ce 100644 GIT binary patch literal 8712 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 literal 6146 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 USDwyuRsaA107*qoM6N<$g11kWF#rGn diff --git a/public/assets/images/full-logo-white.png b/public/assets/images/full-logo-white.png deleted file mode 100644 index aa8d3051e3b0ba84355146206efb4ba2c245d16c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101459 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�>et1NzT4XqWq~Iv_RihXi*n+uXh*w9*W} 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 literal 101439 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

    ^J4O0u_My6)Fw{PTiL~5 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 z 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 diff --git a/public/assets/images/logo-white.png b/public/assets/images/logo-white.png deleted file mode 100644 index 1b591673c002c75a221296226bc3dac6901424f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8074 zcmeAS@N?(olHy`uVBq!ia0y~yU`u6S;5xv<3=~=Hrn&}5=?3_OxB_V}i%nh@8$B%6 zLm1u`o4qZzcv@`qvfScsy2;yovya&(Ps{Z{aqi&nQ-B)yN`m}?84?;4?mO(Czi@&< zK|nyzB@0ak2DyKpE{-7;x859V1S(@_SnzkH_(~=alRS{{?STVW=ZXJY1w%r~2CcRh z0$_7K)#tL1ZAxfpB0nDs$ee~h@zRbIm~&%!vJ`^@Lqnp61LMD|3md1GbIPx6M-QkE z$8PnXVT>JfF79 z9sXCuA(#H3kZlMOZD>*Q(So_(_`?t+1b&z3fFi`;#QiFs-=`NIm#mo6I3$Ugz$j5- zNMvA0n%cyXrpB_Ehxbg*-`#n>HY`%<3kunA5pDB7$32m>*xdR$_KAeWX4Z5yi)Q0q zV~fkfhN^jUc_S!}4=B{XHhiPsKBscd!I{S;M>N%0Yb6E>6NxAJwrzi(UU94U{(u;QQzeFVl&RdjZf0?!*x81(2aAa^sO`9)>@5=! zwg8d5Lo8og9Mlz7x-Tp=HG$64pey8B5U5S^9h7@`ckEem{HSY}Jz@^G`eeeqA|J^R~T=-;}ILm)^kpL?OJMDY&coi+RZpU)$FX!l(c`2 z#u>{l^32LKX-<dWdx|HoG@YkSBY=aok#07o^xp9 z7%xVALmAjfP(w>6Bfg>BZ;X~qPK*{N2SLL$sDqg!yw?pHctA@h93#Bf4J=GR1FVoi z`V2=VuMg|nK77=Bm}7fo<}t}RnZO?B@TMMae5PLgfG6gh!($#3B;r8g{61DtUCj0~ zx<9er^2-n$afXhP3!@G^D-P9RXUQbgC^<4zr)C_`M*oK3tPE@>2`x%khUV1F2McGk zC_&33pn`yOpfJd0bu*!}x-37V`HR4X8|i)m=}2e1yI#SiFD$nN#Pf9Zb6Mw<&;$Uu C(m-PX diff --git a/public/assets/images/logo.png b/public/assets/images/logo.png index a18dc9d95a10830fe58b4abc747558b99be49fc9..3cf786cb8df968ad368f93696cf95f5e401ad9d5 100644 GIT binary patch literal 2828 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 diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png index f0c72ca398af84511fe427532163e352736f8b9c..8f4519fed9840006c6730e8bed57aab150031dba 100644 GIT binary patch literal 1007 zcmV@~0drDELIAGL9O(c600d`2O+f$vv5yPmu{utSa9?YI7t`5`ezWLwjeZ% z4k@TrnmSk^85EinJ7^O-w4m>s=3XwZx%ci~(~@}ifxv6u-M!rRe)s+T?vbX!$g97k zF$YL5&vXox_O^rb91h`%n zV0C4qVFWN9K$>Gr(5pdgI7q?MZRCeYG(eFH0i`~vk3T6f`-AoiR{`!nic+ZS82JT# z`v*=c^+EekR~tRN_eH5+%h6_voUbnS(x)}bS;kxqp#XiwFXDglyCF6jET+=b!kT=a z;ZQ{;;wj`eY2?zIs`rEf^bejY53s&P>2JTtjd0Hi^1^FESb3}@h(tS-1Sk|Xh4)%o z4+`%|)d9)3S-Ly<*|p8<Y04p2n7JCySsJ-(D$mKPxXc~P^|;9i5Y z$getTh3To~iZ)ldI^fCF*JAN=$0K`53D9aixI@8MMC@ja*l6X7BMPt;SgpXDAO6QG zzl4Vm2nE0Z;nH=nrjM%C^iDAOsTUWe+h@4K3+BhFQWRw@5@3cC3){6th51SBeTL8j z5(VbOewAo;LVS1OVs=rtGETM2w{gE-uz^#>pFlpKST#FVEkETNBcP+zE#%( z@aFf}5!w)gnITX$KStdO;55G_$M%7z@MgH^V|xLi2aMf1Yo``fU{<2{2iUhb_p6Rq zZEy2tsA_(UJuQW?LbZ6o`I1{{9%hCh=QCY5iGC>>?m15F0e_|IYIZ~D_z3NY!V8N+ zeygG=a)KfV+ky836`IUXWi`hLK$>F&Ak8rXkmeWxNOOz;q&Y?a(i|fIX^s(qG{*=) dnxnk{{{Wx&R4#9;10VnZ002ovPDHLkV1k~E$bJ9- literal 539 zcmV+$0_6RPP)Px$)k#D_R5(wilf7$GQ5eRb=iEjUONT1Kh$4cBgG1Yd(%cRP6~*4DP{A&aZB4gk zauFQ5=_Ex+8~qCkA{rANRGKN2`bno2!Gcm<`mrRj_1^o+x#?HJ&0u@B!#U6Ieb0NI zhiF)R=8G=6Mv9b+0-Vyv1QrE&2S-g7W|LobOSrYUWln|45*#NuSkw3}f#B(is*aXQ z1JzA9pv4t8_y**8KN$%`j<@31&$4$cKyj7TJ`M3IS@D-o2o5!=iUS7~()T*>@c!qW zDDtP77H%%M`Y{X6gk z%rF_xEdV&P7k~&BXvK3I1Oggh7(_H4hEl}M+ow@@wutq02Q2}G-bAE+2DNE!)B*Ix z%gGaZ%D8gmmqHopeP zmS(@;ietw-BPDxsSrEhjVb2gt;O46+FjM^e%?tVa7RQg(TlSVAitA%FOHop d%=XvC`5)V!(%ZpSN^$@I002ovPDHLkV1fqx^sN8@ diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png index 116cca39991ea654305a9fb8b45977ed970d13fc..8b917359a461b6cf274ae481bd1b30907339c91d 100644 GIT binary patch literal 1646 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 literal 15406 zcmeHOYj9Q76+S+u(>hbdY3)CiQA?f9)Byvzxrmq<+d$5_hKDk|3W}m5DvV&%I@b0U zW(q!rAAP7Kg8tAy%t*MeKoZa(3f|e5~^L)rwNAD9YHe`tRGXSCmbt8$Uk% zew?E0y+KiKM;nlULa#^W>ZzHej!%|ouO~ukYa*nbizA`@Wde14=hVsOaQH`PyCG4c zUP4=8pVUjqkoM+>rKLYK_d{CHHQLjluW&@{oc+jfpK-J`_W_($jyg(M` z4f@pGGsG9`{)Y5daq4iZIP}Wj#pi3*i!avxC1d=OhVyHpPu^7__B|67`=4DcdJndU zrk7q3`=47QK6`PkBYi;pt(*q~zd3g!Kk8{LTs{GG8T0qa%0CFogMHf1pL)sAXUL%1 z%-dSFqo=MLI=neNhq}MZN;mu)`uo8HOC=V)PHm*l8}!U&A3BbVu?+XaaYEOvwB~*& zkF-pWaBkD{3msG6pst(S=AukHGZv{7iS{YzQyVJ37B*rY##|K-sh`S!B8f)8!8lboOvhwStL_Tx1t8n^Xs`0IVCFPrBf z5sLgA^%vaoacbwDzjn^NHZk^%PJLSIcQ1KbbnM(M>ZZ-hkg*5;pjE3WgUv<1z79Oj zTKPEr=G^jWsCY0Se{CRkSH+JLVReBMFT462@)xw#unn}W8Dnv(%O!vA7vR(6#LKQe zm;AYBLHBy>_&C+&m_PSWN57&WvPkr`{wtl1ic|kMBF?n6OZ_|9@})R&pc(0qIMJl1 z-h+qbJ7RRgZ>i`0?Z|(7**x*}`zi5t%{K8(Y`bWS*NdJ{4@w>#J9dkdqCa5S6!Jtw~Adg?=3Cxfhu3-qh$+nf9LQjSfW{tMkcsDqX{Aw?}vbELiWMpA_zi3MPE!?{qd!P@~B;UcGq)(fzukYVomH^`<48A;sl#4hC zy2*H=igM+Lr8CFy?3paqra_<9V9t`5ufr(!V(y0YgmO625-*7);2W<_gv!fEQv+J| zk##`oM3DkMZ_4&{u7pRCZ%N#vq`AuzNp^7pp5F>(c?S8klW!#Ao{;lNDQvXZ?gc zb2XOOBy}p}U5oy6A#YpkhD_3Pnu>=aQ-b1`at}q8pzkgu$McZEJBK-Wbz;pg#u$9f z!{%Sk`2pm;9DaP>^kwAnf_FIb6tQ@j3(8%`?(GadG9J%1in`X#F?gAW#ANDB{^VXa zeZJ`UV2?QZ-ur@Q@sY<3EX7invQ7i#4qJ@1D)rq(zrN%t8fH8s;{l9eG~Bn?EuYSK zX!?|FcBytk`3Yt<)yVoK4rI!yv}X4PoeNT2uxZ7cT&JN)sY$W8gwd9#lD z#m_z<-#+U;O@BuE<=%amVcq53^UnL1ipB-YL~81+;d(P}qZ|Z(x{oTezXZSVPShVW z`uCGFZqfZolNkKAM>Nh~mS6nvmyEm3DEwFG&2w0{fqVnn5!w?zyB0l_SNw7vgtSUx zPfpRUhi?=2BXcv&XyTWA;d}G^0Q|Qk!&-+Ki=XnS<1f+Lc?OCVYnmUtR+<9f7d*$| zj_uD@EPj3$0zc29SPR^5v#vKc?+bz-=V^R<(dq`@NNoy(UpoxD**_9CP0;gjM_dk5sq z)F}pz8>vg2?dlOj=PyWHgFU_SE`j$6c8Pm5pWyP340+KXes5Nw-+V~mwX6!zyM6ayH z`6cMNeKhg&`~sg}o?m#D$5@JhKhXJ+-=v&u{-?M&I4HQ!8S`S72S5L+ZM=UVc0Tg_ zUZTBY$IES9ZRu>WzjC$seD!+7)aK?DKjdFc%sP7gZ)$>iGwkUZw|IlJ3n>47-l3SW z8|6f?`fSj3;AUKY@e>>GPz=1*e9PprpW)k^I$-#pj33Ig7Vd$pxQ*ZPzM>>j3jDmU z$g0CZ-usk)7xt^Wv&C*1*y^UucOfUl&v6fA;2SBAGApJ=#X`k?!oUJ)a-+m@(ttjNM1>wE8o-#%$LgeQ(C! tc?Oc_IGjc0c^WYRb6kUEJ - logo + + {logo && logo} {title} From b9c164c9c4c3de9670cdb2b5d2697fadd49cddd6 Mon Sep 17 00:00:00 2001 From: Ayobami Akingbade Date: Sun, 8 Oct 2023 14:34:11 +0100 Subject: [PATCH 4/6] =?UTF-8?q?=F0=9F=90=9B=20fix(menu):=20fix=20menu=20er?= =?UTF-8?q?ror=20on=20close?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_layouts/app/LayoutImpl/Profile.tsx | 22 ++++++++----------- .../_layouts/app/LayoutImpl/portal/main.ts | 9 +++++++- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/frontend/_layouts/app/LayoutImpl/Profile.tsx b/src/frontend/_layouts/app/LayoutImpl/Profile.tsx index 00497c1df..9d4a35d0f 100644 --- a/src/frontend/_layouts/app/LayoutImpl/Profile.tsx +++ b/src/frontend/_layouts/app/LayoutImpl/Profile.tsx @@ -44,28 +44,24 @@ interface IProps { isFullWidth: boolean; } +const constantNavigation: ILabelValue[] = [ + { + label: "My Account", + value: NAVIGATION_LINKS.ACCOUNT.PROFILE, + }, +]; + export function ProfileOnNavigation({ isFullWidth }: IProps) { const currentUser = useAuthenticatedUserBag(); const router = useRouter(); + const constantNavigationMenuItems = useConstantNavigationMenuItems(); + if (!isFullWidth) { return null; } - const constantNavigationMenuItems = useConstantNavigationMenuItems(); - - const constantNavigation: ILabelValue[] = [ - { - label: "My Account", - value: NAVIGATION_LINKS.ACCOUNT.PROFILE, - }, - { - label: "Menu Settings", - value: NAVIGATION_LINKS.SETTINGS.MENU, - }, - ]; - return ( diff --git a/src/frontend/_layouts/app/LayoutImpl/portal/main.ts b/src/frontend/_layouts/app/LayoutImpl/portal/main.ts index e94de5671..30dceb1c4 100644 --- a/src/frontend/_layouts/app/LayoutImpl/portal/main.ts +++ b/src/frontend/_layouts/app/LayoutImpl/portal/main.ts @@ -1,3 +1,10 @@ +import { NAVIGATION_LINKS } from "frontend/lib/routing/links"; + export const useConstantNavigationMenuItems = () => { - return []; + return [ + { + label: "Menu Settings", + value: NAVIGATION_LINKS.SETTINGS.MENU, + }, + ]; }; From 5b4474491c4d6d7a372791d5a96f14dcfdb1cdcd Mon Sep 17 00:00:00 2001 From: Ayobami Akingbade Date: Mon, 9 Oct 2023 14:43:35 +0100 Subject: [PATCH 5/6] =?UTF-8?q?=F0=9F=90=9B=20fix(auth):=20fix=20auth=20er?= =?UTF-8?q?ror=20when=20there=20is=20a=20portal=20call?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src/frontend/_layouts/guest/index.tsx | 29 +++++++++++++++------------ src/frontend/views/settings/_Base.tsx | 3 +-- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 1e4201709..4a7a98522 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dashpress", - "version": "0.1.7", + "version": "1.0.1", "license": "GPL-3.0-or-later", "scripts": { "dev": "next dev", diff --git a/src/frontend/_layouts/guest/index.tsx b/src/frontend/_layouts/guest/index.tsx index 687860109..ad1bb00e6 100644 --- a/src/frontend/_layouts/guest/index.tsx +++ b/src/frontend/_layouts/guest/index.tsx @@ -4,6 +4,7 @@ import { GuestLayout } from "frontend/design-system/layouts/GuestLayout"; import { useSiteConfig } from "frontend/hooks/app/site.config"; import { useAppTheme } from "../useAppTheme"; import { GoogleTagManager } from "../scripts/GoogleTagManager"; +import { PortalProvider } from "../app/portal"; interface IProps { children: ReactNode; @@ -16,18 +17,20 @@ export function AuthLayout({ children, title, subTitle }: IProps) { useAppTheme(); return ( - - - - {title} - {siteConfig.name} - - - {children} - - + + + + + {title} - {siteConfig.name} + + + {children} + + + ); } diff --git a/src/frontend/views/settings/_Base.tsx b/src/frontend/views/settings/_Base.tsx index f26c8aa87..349c0a4b0 100644 --- a/src/frontend/views/settings/_Base.tsx +++ b/src/frontend/views/settings/_Base.tsx @@ -75,8 +75,7 @@ export function BaseSettingsLayout({ children }: IProps) { const menuItems = useMutateBaseSettingsMenu(baseMenuItems); return ( - {/* TODO */} - {false && ( + {false && ( // TODO log the user who click on the button to not disturb again <> Date: Tue, 10 Oct 2023 12:05:03 +0100 Subject: [PATCH 6/6] =?UTF-8?q?=E2=9C=A8=20feat(menu):=20show=20entities?= =?UTF-8?q?=20menu=20as=20sub=20menu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/__tests__/_/forCodeCoverage.spec.ts | 5 +- src/__tests__/api/_test-utils/_app-config.ts | 4 +- .../api/config/[key]/[entity].spec.ts | 4 +- src/__tests__/api/menu/index.spec.ts | 118 ++++++++++++++++-- .../configuration/configuration.service.ts | 42 +++++-- .../dashboard-widgets.service.ts | 7 +- src/backend/entities/entities.service.ts | 2 +- .../AbstractConfigDataPersistenceService.ts | 31 +---- .../DatabaseConfigDataPersistenceAdaptor.ts | 4 +- .../JsonFileConfigDataPersistenceAdaptor.ts | 4 +- .../MemoryConfigDataPersistenceAdaptor.ts | 4 +- .../RedisConfigDataPersistenceAdaptor.ts | 4 +- .../ConfigDataPersistenceAdaptor.spec.ts | 8 +- src/backend/menu/menu.service.ts | 69 +++++----- src/backend/menu/types.ts | 2 + src/frontend/hooks/entity/entity.config.ts | 9 +- src/frontend/hooks/entity/entity.queries.ts | 23 ++-- src/frontend/views/entity/Diction/Form.tsx | 10 +- src/frontend/views/entity/Diction/index.tsx | 6 +- src/frontend/views/entity/_Base.tsx | 113 ++++++++++------- src/frontend/views/entity/portal/index.ts | 1 + src/frontend/views/entity/portal/main.ts | 10 ++ src/shared/configurations/constants.ts | 3 +- src/shared/types/config.ts | 2 + 24 files changed, 308 insertions(+), 177 deletions(-) create mode 100644 src/frontend/views/entity/portal/index.ts create mode 100644 src/frontend/views/entity/portal/main.ts diff --git a/src/__tests__/_/forCodeCoverage.spec.ts b/src/__tests__/_/forCodeCoverage.spec.ts index 8ae1e7a7b..2746b9bed 100644 --- a/src/__tests__/_/forCodeCoverage.spec.ts +++ b/src/__tests__/_/forCodeCoverage.spec.ts @@ -38,6 +38,8 @@ import { FOR_CODE_COV as $38 } from "shared/types/dashboard/types"; import { FOR_CODE_COV as $39 } from "shared/types/dashboard/base"; import { FOR_CODE_COV as $40 } from "frontend/design-system/layouts/types"; import { FOR_CODE_COV as $41 } from "frontend/design-system/components/Form/_types"; +import { FOR_CODE_COV as $42 } from "backend/menu/types"; + import { noop } from "shared/lib/noop"; noop( @@ -80,7 +82,8 @@ noop( $38, $39, $40, - $41 + $41, + $42 ); describe("Code coverage ignores plain types file", () => { diff --git a/src/__tests__/api/_test-utils/_app-config.ts b/src/__tests__/api/_test-utils/_app-config.ts index 3d1b86f3b..3702d3943 100644 --- a/src/__tests__/api/_test-utils/_app-config.ts +++ b/src/__tests__/api/_test-utils/_app-config.ts @@ -3,8 +3,8 @@ import { createConfigDomainPersistenceService } from "backend/lib/config-persist const TEST_APP_CONFIG: Partial> = { disabled_entities: ["disabled-entity-1", "disabled-entity-2"], "entity_diction__base-model": { - singular: "Base Model", - plural: "Base Models", + singular: "Base Model Singular", + plural: "Base Model Plural", }, system_settings: { forceIntrospection: false, diff --git a/src/__tests__/api/config/[key]/[entity].spec.ts b/src/__tests__/api/config/[key]/[entity].spec.ts index 28eb6e55e..116c900f4 100644 --- a/src/__tests__/api/config/[key]/[entity].spec.ts +++ b/src/__tests__/api/config/[key]/[entity].spec.ts @@ -22,8 +22,8 @@ describe("/api/config/[key]/[entity]", () => { expect(res._getStatusCode()).toBe(200); expect(res._getJSONData()).toEqual({ - singular: "Base Model", - plural: "Base Models", + singular: "Base Model Singular", + plural: "Base Model Plural", }); }); diff --git a/src/__tests__/api/menu/index.spec.ts b/src/__tests__/api/menu/index.spec.ts index 94f2a67c2..1210ab833 100644 --- a/src/__tests__/api/menu/index.spec.ts +++ b/src/__tests__/api/menu/index.spec.ts @@ -5,12 +5,12 @@ import { setupAppConfigTestData, } from "__tests__/api/_test-utils"; -describe.skip("/api/menu", () => { +describe("/api/menu", () => { beforeAll(async () => { await setupAllTestData(["schema", "app-config"]); }); - it("should list all entities not disabled", async () => { + it("should render the menu with non disabled menus", async () => { const { req, res } = createAuthenticatedMocks({ method: "GET", }); @@ -20,16 +20,63 @@ describe.skip("/api/menu", () => { expect(res._getJSONData()).toMatchInlineSnapshot(` [ { - "label": "base-model", - "value": "base-model", + "icon": "Home", + "link": "home", + "title": "Home", + "type": "system", }, { - "label": "secondary-model", - "value": "secondary-model", + "children": [ + { + "icon": "File", + "link": "base-model", + "title": "Base Model Plural", + "type": "entities", + }, + { + "icon": "File", + "link": "secondary-model", + "title": "Secondary Model", + "type": "entities", + }, + { + "icon": "File", + "link": "tests", + "title": "Tests", + "type": "entities", + }, + ], + "icon": "File", + "link": "home", + "title": "Entities", + "type": "system", }, { - "label": "tests", - "value": "tests", + "icon": "Zap", + "link": "actions", + "title": "Actions", + "type": "system", + }, + { + "children": [], + "icon": "Settings", + "link": "settings", + "title": "Settings", + "type": "system", + }, + { + "children": [], + "icon": "Users", + "link": "users", + "title": "Users", + "type": "system", + }, + { + "children": [], + "icon": "Shield", + "link": "roles", + "title": "Roles", + "type": "system", }, ] `); @@ -51,16 +98,61 @@ describe.skip("/api/menu", () => { expect(res._getJSONData()).toMatchInlineSnapshot(` [ { - "label": "secondary-model", - "value": "secondary-model", + "icon": "Home", + "link": "home", + "title": "Home", + "type": "system", + }, + { + "children": [ + { + "icon": "File", + "link": "secondary-model", + "title": "Secondary Model", + "type": "entities", + }, + { + "icon": "File", + "link": "base-model", + "title": "Base Model Plural", + "type": "entities", + }, + ], + "icon": "File", + "link": "home", + "title": "Entities", + "type": "system", + }, + { + "icon": "Zap", + "link": "actions", + "title": "Actions", + "type": "system", + }, + { + "children": [], + "icon": "Settings", + "link": "settings", + "title": "Settings", + "type": "system", + }, + { + "children": [], + "icon": "Users", + "link": "users", + "title": "Users", + "type": "system", }, { - "label": "base-model", - "value": "base-model", + "children": [], + "icon": "Shield", + "link": "roles", + "title": "Roles", + "type": "system", }, ] `); }); }); -// :test piService.filterPermitte +// TODO test isMenuItemAllowed diff --git a/src/backend/configuration/configuration.service.ts b/src/backend/configuration/configuration.service.ts index 21db88f8e..38ddffa2f 100644 --- a/src/backend/configuration/configuration.service.ts +++ b/src/backend/configuration/configuration.service.ts @@ -30,13 +30,37 @@ export class ConfigurationApiService implements IApplicationService { ); } + async showMultipleConfigForEntities( + key: AppConfigurationKeys, + entities: string[] + ): Promise> { + const allKeys = entities.map((entity) => + this._appConfigPersistenceService.mergeKeyWithSecondaryKey(key, entity) + ); + + const values = await this._appConfigPersistenceService.getAllItemsIn( + allKeys + ); + + return Object.fromEntries( + entities.map((entity) => [ + entity, + (values[ + this._appConfigPersistenceService.mergeKeyWithSecondaryKey( + key, + entity + ) + ] as T) || (CONFIGURATION_KEYS[key].defaultValue as T), + ]) + ); + } + async show(key: AppConfigurationKeys, entity?: string): Promise { this.checkConfigKeyEntityRequirement(key, entity); - const value = - await this._appConfigPersistenceService.getItemWithMaybeSecondaryKey( - key, - entity - ); + + const value = await this._appConfigPersistenceService.getItem( + this._appConfigPersistenceService.mergeKeyWithSecondaryKey(key, entity) + ); if (value) { return value as T; @@ -58,10 +82,10 @@ export class ConfigurationApiService implements IApplicationService { entity?: string ): Promise { this.checkConfigKeyEntityRequirement(key, entity); - await this._appConfigPersistenceService.upsertItemWithMaybeSecondaryKey( - key, - value, - entity + + return await this._appConfigPersistenceService.upsertItem( + this._appConfigPersistenceService.mergeKeyWithSecondaryKey(key, entity), + value ); } } diff --git a/src/backend/dashboard-widgets/dashboard-widgets.service.ts b/src/backend/dashboard-widgets/dashboard-widgets.service.ts index 228cb6fa9..972b0a974 100644 --- a/src/backend/dashboard-widgets/dashboard-widgets.service.ts +++ b/src/backend/dashboard-widgets/dashboard-widgets.service.ts @@ -179,10 +179,9 @@ return [actual[0], relative[0]]; return await this.generateDefaultDashboardWidgets(dashboardId); } - const widgets = - (await this._dashboardWidgetsPersistenceService.getAllItemsIn( - widgetList - )) as IWidgetConfig[]; + const widgets = Object.values( + await this._dashboardWidgetsPersistenceService.getAllItemsIn(widgetList) + ); return sortByListOrder(widgetList, widgets); } diff --git a/src/backend/entities/entities.service.ts b/src/backend/entities/entities.service.ts index a86a5d5ea..3285419cf 100644 --- a/src/backend/entities/entities.service.ts +++ b/src/backend/entities/entities.service.ts @@ -131,7 +131,7 @@ export class EntitiesApiService implements IApplicationService { ).includes(entity); } - async getAllEntities(): Promise<{ value: string; label: string }[]> { + async getAllEntities(): Promise { return (await this._schemasApiService.getDBSchema()).map(({ name }) => ({ value: name, label: name, diff --git a/src/backend/lib/config-persistence/AbstractConfigDataPersistenceService.ts b/src/backend/lib/config-persistence/AbstractConfigDataPersistenceService.ts index b2b56afd8..fb9c1c693 100644 --- a/src/backend/lib/config-persistence/AbstractConfigDataPersistenceService.ts +++ b/src/backend/lib/config-persistence/AbstractConfigDataPersistenceService.ts @@ -14,7 +14,10 @@ export abstract class AbstractConfigDataPersistenceService { this._configApiService = configApiService; } - private mergeKeyWithSecondaryKey(key: string, secondaryKey: string) { + public mergeKeyWithSecondaryKey(key: string, secondaryKey: string) { + if (!secondaryKey) { + return key; + } return `${key}__${secondaryKey}`; } @@ -30,17 +33,7 @@ export abstract class AbstractConfigDataPersistenceService { throw new NotFoundError(`${key} not found for '${this._configDomain}'`); } - public async getItemWithMaybeSecondaryKey( - key: string, - secondaryKey?: string - ): Promise { - if (!secondaryKey) { - return await this.getItem(key); - } - return await this.getItem(this.mergeKeyWithSecondaryKey(key, secondaryKey)); - } - - public abstract getAllItemsIn(itemIds: string[]): Promise; + public abstract getAllItemsIn(itemIds: string[]): Promise>; public abstract getAllAsKeyValuePair(): Promise>; @@ -60,20 +53,6 @@ export abstract class AbstractConfigDataPersistenceService { await this.persistItem(key, data); } - public async upsertItemWithMaybeSecondaryKey( - key: string, - value: T, - secondaryKey?: string - ): Promise { - if (!secondaryKey) { - return await this.upsertItem(key, value); - } - return await this.upsertItem( - this.mergeKeyWithSecondaryKey(key, secondaryKey), - value - ); - } - public abstract removeItem(key: string): Promise; public async resetState(keyField: keyof T, data: T[]) { diff --git a/src/backend/lib/config-persistence/DatabaseConfigDataPersistenceAdaptor.ts b/src/backend/lib/config-persistence/DatabaseConfigDataPersistenceAdaptor.ts index 6f9fc578d..2c40b8b9e 100644 --- a/src/backend/lib/config-persistence/DatabaseConfigDataPersistenceAdaptor.ts +++ b/src/backend/lib/config-persistence/DatabaseConfigDataPersistenceAdaptor.ts @@ -89,7 +89,9 @@ export class DatabaseConfigDataPersistenceAdaptor< .where("domain", "=", this._configDomain) .from(CONFIG_TABLE_NAME); - return items.map(({ value }) => JSON.parse(value)); + return Object.fromEntries( + items.map(({ key, value }) => [key, JSON.parse(value)]) + ); } async getItem(key: string) { diff --git a/src/backend/lib/config-persistence/JsonFileConfigDataPersistenceAdaptor.ts b/src/backend/lib/config-persistence/JsonFileConfigDataPersistenceAdaptor.ts index c1ec3b420..d7c16f312 100644 --- a/src/backend/lib/config-persistence/JsonFileConfigDataPersistenceAdaptor.ts +++ b/src/backend/lib/config-persistence/JsonFileConfigDataPersistenceAdaptor.ts @@ -66,7 +66,9 @@ export class JsonFileConfigDataPersistenceAdaptor< async getAllItemsIn(itemIds: string[]) { const allIndexedItems = await this.getDomainData(); - return itemIds.map((itemId) => allIndexedItems[itemId]); + return Object.fromEntries( + itemIds.map((itemId) => [itemId, allIndexedItems[itemId]]) + ); } async getItem(key: string) { diff --git a/src/backend/lib/config-persistence/MemoryConfigDataPersistenceAdaptor.ts b/src/backend/lib/config-persistence/MemoryConfigDataPersistenceAdaptor.ts index 7a3609811..5c9bca6e4 100644 --- a/src/backend/lib/config-persistence/MemoryConfigDataPersistenceAdaptor.ts +++ b/src/backend/lib/config-persistence/MemoryConfigDataPersistenceAdaptor.ts @@ -51,7 +51,9 @@ export class MemoryConfigDataPersistenceAdaptor< this._configDomain ); - return itemIds.map((itemId) => allItems[itemId]); + return Object.fromEntries( + itemIds.map((itemId) => [itemId, allItems[itemId]]) + ); } async getItem(key: string) { diff --git a/src/backend/lib/config-persistence/RedisConfigDataPersistenceAdaptor.ts b/src/backend/lib/config-persistence/RedisConfigDataPersistenceAdaptor.ts index 5090c6a5b..93762e9c0 100644 --- a/src/backend/lib/config-persistence/RedisConfigDataPersistenceAdaptor.ts +++ b/src/backend/lib/config-persistence/RedisConfigDataPersistenceAdaptor.ts @@ -67,7 +67,9 @@ export class RedisConfigDataPersistenceAdaptor< await this.getRedisInstance() ).hmGet(this.wrapWithConfigDomain(), itemIds); - return Object.values(allData).map((value) => JSON.parse(value)); + return Object.fromEntries( + allData.map((value, index) => [itemIds[index], JSON.parse(value)]) + ); } async getItem(key: string) { diff --git a/src/backend/lib/config-persistence/__tests__/ConfigDataPersistenceAdaptor.spec.ts b/src/backend/lib/config-persistence/__tests__/ConfigDataPersistenceAdaptor.spec.ts index 10d4f75f6..ccd9bbc9f 100644 --- a/src/backend/lib/config-persistence/__tests__/ConfigDataPersistenceAdaptor.spec.ts +++ b/src/backend/lib/config-persistence/__tests__/ConfigDataPersistenceAdaptor.spec.ts @@ -148,10 +148,10 @@ describe.each(PERSITENT_ADAPTORS)( }); it("should getAllItemsIn", async () => { - expect(await adaptor.getAllItemsIn(["id-2", "id-3"])).toEqual([ - { age: 2, id: "id-2", name: "Second Item" }, - { age: 3, id: "id-3", name: "Third Item" }, - ]); + expect(await adaptor.getAllItemsIn(["id-2", "id-3"])).toEqual({ + "id-2": { age: 2, id: "id-2", name: "Second Item" }, + "id-3": { age: 3, id: "id-3", name: "Third Item" }, + }); }); } ); diff --git a/src/backend/menu/menu.service.ts b/src/backend/menu/menu.service.ts index a179f7b65..0d924087e 100644 --- a/src/backend/menu/menu.service.ts +++ b/src/backend/menu/menu.service.ts @@ -21,6 +21,7 @@ import { import { sortByList } from "shared/logic/entities/sort.utils"; import { RolesApiService, rolesApiService } from "backend/roles/roles.service"; import { ILabelValue } from "shared/types/options"; +import { ISingularPlural } from "shared/types/config"; import { portalCheckIfIsMenuAllowed, getPortalMenuItems } from "./portal"; import { IBaseNavigationMenuApiService } from "./types"; @@ -71,33 +72,33 @@ export class NavigationMenuApiService }, ]); - const entitiesToShow = await this.getUserMenuEntities(); + const entitiesToShow = await this.getUserEntities(); + + const dictionMap = + await this._configurationApiService.showMultipleConfigForEntities( + "entity_diction", + entitiesToShow.map((value) => value.value) + ); navItems = navItems.concat([ { id: nanoid(), title: "Entities", - type: NavigationMenuItemType.Header, - children: [], + icon: "File", + type: NavigationMenuItemType.System, + link: SystemLinks.Home, + children: entitiesToShow.map((entity) => ({ + id: nanoid(), + title: + dictionMap[entity.value].plural || userFriendlyCase(entity.label), + icon: "File", + type: NavigationMenuItemType.Entities, + link: entity.value, + })), }, ]); - entitiesToShow.forEach((entity) => { - navItems.push({ - id: nanoid(), - title: userFriendlyCase(entity.label), // TODO get the current label - icon: "File", - type: NavigationMenuItemType.Entities, - link: entity.value, - }); - }); - navItems = navItems.concat([ - { - id: nanoid(), - title: "Application Menu", - type: NavigationMenuItemType.Header, - }, { id: nanoid(), title: "Actions", @@ -113,37 +114,29 @@ export class NavigationMenuApiService link: SystemLinks.Settings, children: [], }, + { id: nanoid(), - title: "Accounts", + title: "Users", icon: "Users", type: NavigationMenuItemType.System, link: SystemLinks.Users, - children: [ - { - id: nanoid(), - title: "Users", - icon: "Users", - type: NavigationMenuItemType.System, - link: SystemLinks.Users, - children: [], - }, - { - id: nanoid(), - title: "Roles", - icon: "Shield", - type: NavigationMenuItemType.System, - link: SystemLinks.Roles, - children: [], - }, - ], + children: [], + }, + { + id: nanoid(), + title: "Roles", + icon: "Shield", + type: NavigationMenuItemType.System, + link: SystemLinks.Roles, + children: [], }, ]); return navItems; } - private async getUserMenuEntities(): Promise { + private async getUserEntities(): Promise { const [hiddenMenuEntities, entitiesOrder, activeEntities] = await Promise.all([ this._configurationApiService.show("disabled_menu_entities"), diff --git a/src/backend/menu/types.ts b/src/backend/menu/types.ts index 17db2bd3f..966300988 100644 --- a/src/backend/menu/types.ts +++ b/src/backend/menu/types.ts @@ -7,3 +7,5 @@ export interface IBaseNavigationMenuApiService { navItems: INavigationMenuItem[] ): Promise; } + +export const FOR_CODE_COV = 1; diff --git a/src/frontend/hooks/entity/entity.config.ts b/src/frontend/hooks/entity/entity.config.ts index 0de1083b2..3a20cf0cc 100644 --- a/src/frontend/hooks/entity/entity.config.ts +++ b/src/frontend/hooks/entity/entity.config.ts @@ -14,6 +14,7 @@ import { uniqBy } from "shared/lib/array/uniq-by"; import { userFriendlyCase } from "shared/lib/strings/friendly-case"; import { FIELD_TYPES_CONFIG_MAP } from "shared/validations"; import { IEntityCrudSettings } from "shared/configurations"; +import { ISingularPlural } from "shared/types/config"; import { useEntityFields } from "./entity.store"; import { getFieldTypeBoundedValidations, @@ -33,10 +34,10 @@ export function useEntityId() { export function useEntityDiction(paramEntity?: string) { const entity = useEntitySlug(paramEntity); - const entityDiction = useEntityConfiguration<{ - plural: string; - singular: string; - }>("entity_diction", entity); + const entityDiction = useEntityConfiguration( + "entity_diction", + entity + ); return { singular: entityDiction.data?.singular || userFriendlyCase(entity), plural: entityDiction.data?.plural || userFriendlyCase(entity), diff --git a/src/frontend/hooks/entity/entity.queries.ts b/src/frontend/hooks/entity/entity.queries.ts index 830a9dab1..fb4cc0aae 100644 --- a/src/frontend/hooks/entity/entity.queries.ts +++ b/src/frontend/hooks/entity/entity.queries.ts @@ -2,24 +2,23 @@ import { useCallback } from "react"; import { userFriendlyCase } from "shared/lib/strings/friendly-case"; import { useApiQueries } from "frontend/lib/data/useApi/useApiQueries"; import { AppStorage } from "frontend/lib/storage/app"; +import { ISingularPlural } from "shared/types/config"; import { configurationApiPath } from "../configuration/configuration.store"; export function useEntityDictionPlurals( input: T[], field: P ) { - const entityDictions = useApiQueries( - { - input, - accessor: field, - pathFn: (entity) => - configurationApiPath("entity_diction", entity as unknown as string), - placeholderDataFn: (entity) => - AppStorage.get( - configurationApiPath("entity_diction", entity as unknown as string) - ), - } - ); + const entityDictions = useApiQueries({ + input, + accessor: field, + pathFn: (entity) => + configurationApiPath("entity_diction", entity as unknown as string), + placeholderDataFn: (entity) => + AppStorage.get( + configurationApiPath("entity_diction", entity as unknown as string) + ), + }); return useCallback( (fieldName: string, singular?: boolean): string => { diff --git a/src/frontend/views/entity/Diction/Form.tsx b/src/frontend/views/entity/Diction/Form.tsx index 50cc38015..d9fcabe14 100644 --- a/src/frontend/views/entity/Diction/Form.tsx +++ b/src/frontend/views/entity/Diction/Form.tsx @@ -1,18 +1,14 @@ import { IFormProps } from "frontend/lib/form/types"; import { SchemaForm } from "frontend/components/SchemaForm"; import { MAKE_APP_CONFIGURATION_CRUD_CONFIG } from "frontend/hooks/configuration/configuration.constant"; - -type IDictionSettings = { - plural: string; - singular: string; -}; +import { ISingularPlural } from "shared/types/config"; export function EntityDictionForm({ onSubmit, initialValues, -}: IFormProps) { +}: IFormProps) { return ( - + onSubmit={onSubmit} initialValues={initialValues} icon="save" diff --git a/src/frontend/views/entity/Diction/index.tsx b/src/frontend/views/entity/Diction/index.tsx index 2756585a6..f3012ba46 100644 --- a/src/frontend/views/entity/Diction/index.tsx +++ b/src/frontend/views/entity/Diction/index.tsx @@ -16,6 +16,7 @@ import { MAKE_APP_CONFIGURATION_CRUD_CONFIG } from "frontend/hooks/configuration import { useState } from "react"; import { DictionDocumentation } from "frontend/docs/diction"; import { DOCUMENTATION_LABEL } from "frontend/docs"; +import { NAVIGATION_MENU_ENDPOINT } from "frontend/_layouts/app/LayoutImpl/constants"; import { BaseEntitySettingsLayout } from "../_Base"; import { EntityDictionForm } from "./Form"; import { ENTITY_CONFIGURATION_VIEW } from "../constants"; @@ -30,7 +31,10 @@ export function EntityDictionSettings() { const entityDiction = useEntityDiction(); const upsertConfigurationMutation = useUpsertConfigurationMutation( "entity_diction", - entity + entity, + { + otherEndpoints: [NAVIGATION_MENU_ENDPOINT], + } ); const [isDocOpen, setIsDocOpen] = useState(false); diff --git a/src/frontend/views/entity/_Base.tsx b/src/frontend/views/entity/_Base.tsx index 6db6eb162..e433974cd 100644 --- a/src/frontend/views/entity/_Base.tsx +++ b/src/frontend/views/entity/_Base.tsx @@ -15,7 +15,10 @@ import { Codepen, } from "react-feather"; import { SoftButton } from "frontend/design-system/components/Button/SoftButton"; -import { MenuSection } from "frontend/design-system/components/Section/MenuSection"; +import { + IMenuSectionItem, + MenuSection, +} from "frontend/design-system/components/Section/MenuSection"; import { ContentLayout } from "frontend/design-system/components/Section/SectionDivider"; import { Spacer } from "frontend/design-system/primitives/Spacer"; import { ADMIN_ACTION_INSTANCES_CRUD_CONFIG } from "./Actions/constants"; @@ -23,6 +26,62 @@ import { ENTITY_CRUD_SETTINGS_TAB_LABELS, ENTITY_FIELD_SETTINGS_TAB_LABELS, } from "./constants"; +import { useMutateBaseEntitySettingsMenu } from "./portal"; + +const baseMenuItems = (entity: string): IMenuSectionItem[] => [ + { + action: NAVIGATION_LINKS.ENTITY.CONFIG.CRUD(entity, { + tab: ENTITY_CRUD_SETTINGS_TAB_LABELS.CREATE, + }), + IconComponent: Sliders, + name: "CRUD", + order: 10, + }, + { + action: NAVIGATION_LINKS.ENTITY.CONFIG.DICTION(entity), + name: "Diction", + IconComponent: Type, + order: 20, + }, + { + action: NAVIGATION_LINKS.ENTITY.CONFIG.FIELDS(entity, { + tab: ENTITY_FIELD_SETTINGS_TAB_LABELS.LABELS, + }), + name: "Fields", + IconComponent: File, + order: 30, + }, + { + action: NAVIGATION_LINKS.ENTITY.CONFIG.RELATIONS(entity), + name: "Relations", + IconComponent: Link2, + order: 40, + }, + { + action: NAVIGATION_LINKS.ENTITY.CONFIG.VIEWS(entity), + name: "Views", + IconComponent: Filter, + order: 50, + }, + { + action: NAVIGATION_LINKS.ENTITY.CONFIG.FORM(entity), + name: "Form Scripts", + IconComponent: Code, + order: 60, + }, + { + action: NAVIGATION_LINKS.ENTITY.CONFIG.PRESENTATION(entity), + name: "Presentation Scripts", + IconComponent: Codepen, + order: 70, + }, + { + action: NAVIGATION_LINKS.ENTITY.CONFIG.FORM_INTEGRATIONS(entity), + name: ADMIN_ACTION_INSTANCES_CRUD_CONFIG.TEXT_LANG.TITLE, + IconComponent: Zap, + order: 80, + }, +]; interface IProps { children: ReactNode; @@ -33,52 +92,10 @@ export function BaseEntitySettingsLayout({ children }: IProps) { const { canGoBack, goBack } = useNavigationStack(); const router = useRouter(); - const baseMenuItems = [ - { - action: NAVIGATION_LINKS.ENTITY.CONFIG.CRUD(entity, { - tab: ENTITY_CRUD_SETTINGS_TAB_LABELS.CREATE, - }), - IconComponent: Sliders, - name: "CRUD", - }, - { - action: NAVIGATION_LINKS.ENTITY.CONFIG.DICTION(entity), - name: "Diction", - IconComponent: Type, - }, - { - action: NAVIGATION_LINKS.ENTITY.CONFIG.FIELDS(entity, { - tab: ENTITY_FIELD_SETTINGS_TAB_LABELS.LABELS, - }), - name: "Fields", - IconComponent: File, - }, - { - action: NAVIGATION_LINKS.ENTITY.CONFIG.RELATIONS(entity), - name: "Relations", - IconComponent: Link2, - }, - { - action: NAVIGATION_LINKS.ENTITY.CONFIG.VIEWS(entity), - name: "Views", - IconComponent: Filter, - }, - { - action: NAVIGATION_LINKS.ENTITY.CONFIG.FORM(entity), - name: "Form Scripts", - IconComponent: Code, - }, - { - action: NAVIGATION_LINKS.ENTITY.CONFIG.PRESENTATION(entity), - name: "Presentation Scripts", - IconComponent: Codepen, - }, - { - action: NAVIGATION_LINKS.ENTITY.CONFIG.FORM_INTEGRATIONS(entity), - name: ADMIN_ACTION_INSTANCES_CRUD_CONFIG.TEXT_LANG.TITLE, - IconComponent: Zap, - }, - ]; + const menuItems = useMutateBaseEntitySettingsMenu( + entity, + baseMenuItems(entity) + ); return ( @@ -99,7 +116,7 @@ export function BaseEntitySettingsLayout({ children }: IProps) { diff --git a/src/frontend/views/entity/portal/index.ts b/src/frontend/views/entity/portal/index.ts new file mode 100644 index 000000000..184d92030 --- /dev/null +++ b/src/frontend/views/entity/portal/index.ts @@ -0,0 +1 @@ +export { useMutateBaseEntitySettingsMenu } from "./main"; diff --git a/src/frontend/views/entity/portal/main.ts b/src/frontend/views/entity/portal/main.ts new file mode 100644 index 000000000..8f9573d2b --- /dev/null +++ b/src/frontend/views/entity/portal/main.ts @@ -0,0 +1,10 @@ +import { IMenuSectionItem } from "frontend/design-system/components/Section/MenuSection"; +import { noop } from "shared/lib/noop"; + +export const useMutateBaseEntitySettingsMenu = ( + entity: string, + baseMenu: IMenuSectionItem[] +) => { + noop(entity); + return baseMenu; +}; diff --git a/src/shared/configurations/constants.ts b/src/shared/configurations/constants.ts index 001aff0ea..889bd42bd 100644 --- a/src/shared/configurations/constants.ts +++ b/src/shared/configurations/constants.ts @@ -1,3 +1,4 @@ +import { ISingularPlural } from "shared/types/config"; import { BaseAppConfigurationKeys } from "./base-types"; import { PortalConfigurationKeys, PORTAL_CONFIGURATION_KEYS } from "./portal"; import { DEFAULT_SYSTEM_SETTINGS } from "./system"; @@ -55,7 +56,7 @@ export const CONFIGURATION_KEYS: Record< entity_diction: { crudConfigLabel: "Diction Settings", requireEntity: true, - defaultValue: { singular: "", plural: "" }, + defaultValue: { singular: "", plural: "" } as ISingularPlural, }, entity_form_extension: { crudConfigLabel: "Form Scripts", diff --git a/src/shared/types/config.ts b/src/shared/types/config.ts index 22f7373a7..0ab6fa778 100644 --- a/src/shared/types/config.ts +++ b/src/shared/types/config.ts @@ -5,4 +5,6 @@ export type ISiteSettings = { fullLogo: string; }; +export type ISingularPlural = { singular: string; plural: string }; + export const FOR_CODE_COV = 1;