diff --git a/packages/nc-gui/components/project/spreadsheet/editColumn/editColumn.vue b/packages/nc-gui/components/project/spreadsheet/editColumn/editColumn.vue index ed4b5a1f07..69f566fd37 100644 --- a/packages/nc-gui/components/project/spreadsheet/editColumn/editColumn.vue +++ b/packages/nc-gui/components/project/spreadsheet/editColumn/editColumn.vue @@ -22,252 +22,263 @@ +
+ +
+ +

Foreign Key

+ + mdi-table + {{ relation._rtn }} + mdi-delete-forever + + (v) +
+
+ Home - (v{{$store.state.project.projectInfo && $store.state.project.projectInfo.version}}) + (v{{ + $store.state.project.projectInfo && $store.state.project.projectInfo.version + }}) @@ -235,7 +238,7 @@ @@ -645,6 +648,13 @@ + + + + info  Copy Project info + + + @@ -824,6 +834,7 @@ import 'splitpanes/dist/splitpanes.css' import XBtn from "../components/global/xBtn"; import ChangeEnv from "../components/changeEnv"; import Discord from "@/components/discord"; +import {copyTextToClipboard} from "@/helpers/xutils"; export default { components: { @@ -971,7 +982,7 @@ export default { 'xc-auth': this.$store.state.users.token } })).data; - const obj = Object.values(info).find(v => v.apiType === 'rest' ? v.swaggerUrl : v.gqlApiUrl); + const obj = Object.values(info).find(v => v.apiType === 'rest' ? v.swaggerUrl : v.gqlApiUrl); this.swaggerOrGraphiqlUrl = obj.apiType === 'rest' ? obj.swaggerUrl : obj.gqlApiUrl } catch (e) { } @@ -1296,6 +1307,15 @@ export default { }, changeTheme() { this.$store.dispatch('windows/ActToggleDarkMode', !this.$store.state.windows.darkTheme); + }, + async copyProjectInfo() { + try { + const data = await this.$store.dispatch('sqlMgr/ActSqlOp', [null, 'ncProjectInfo']) + copyTextToClipboard(Object.entries(data).map(([k, v]) => `${k}: **${v}**`).join('\n')); + this.$toast.info('Copied project info to clipboard').goAway(3000); + } catch (e) { + this.$toast.error(e.message).goAway(3000); + } } }, @@ -1344,7 +1364,7 @@ a { animation-iteration-count: infinite; } -/deep/ .v-toolbar__items{ +/deep/ .v-toolbar__items { align-items: center; } diff --git a/packages/nc-gui/pages/projects/index.vue b/packages/nc-gui/pages/projects/index.vue index cfd46052da..be4ec2e548 100644 --- a/packages/nc-gui/pages/projects/index.vue +++ b/packages/nc-gui/pages/projects/index.vue @@ -36,7 +36,8 @@ @click="projectsLoad" v-bind:tooltip="$t('projects.reload_projects_tooltip')" > - mdi-refresh   @@ -125,19 +126,20 @@ {{ - $t('projects.create_new_project_button.subtext_1') + $t('projects.create_new_project_button.subtext_1') }} {{ - $t('projects.create_new_project_button.subtext_1_tooltip') + $t('projects.create_new_project_button.subtext_1_tooltip') }} @@ -163,12 +165,13 @@ {{ - $t('projects.create_new_project_button.subtext_2_tooltip') + $t('projects.create_new_project_button.subtext_2_tooltip') }} @@ -243,8 +246,8 @@ {{ - props.item.title - }} + props.item.title + }}
mdi-stop-circle-outline + >mdi-stop-circle-outline mdi-loading mdi-spin + >mdi-loading mdi-spin @@ -330,7 +334,7 @@ {{ - $t('projects.verticial_option_1') + $t('projects.verticial_option_1') }} @@ -344,8 +348,8 @@ {{ - $t('projects.verticial_option_2') - }} + $t('home.project_verticial_option_2') + }} {{ - $t('projects.verticial_option_3') + $t('projects.verticial_option_3') }} @@ -374,7 +378,7 @@ :value="true" color="error" icon="warning" - >{{ $t('projects.search.no_result', { search }) }} + >{{ $t('projects.search.no_result', { search }) }} @@ -435,7 +439,8 @@ @click="onCreateProject" > - mdi-lightbulb-on   {{ $t('projects.create_new_project_button.text') }} @@ -454,7 +459,7 @@ align-start " > - + @@ -507,12 +512,13 @@ > mdi-calendar-monthmdi-calendar-month + {{ - $t('projects.show_community_message_2') + $t('projects.show_community_message_2') }} @@ -522,7 +528,7 @@ {{ - $t('projects.show_community_message_3') + $t('projects.show_community_message_3') }} @@ -532,7 +538,7 @@ {{ - $t('projects.show_community_message_4') + $t('projects.show_community_message_4') }} @@ -558,479 +564,505 @@ \ No newline at end of file +--> diff --git a/packages/nc-lib-gui/package.json b/packages/nc-lib-gui/package.json index ced0063dc3..764e3a8559 100644 --- a/packages/nc-lib-gui/package.json +++ b/packages/nc-lib-gui/package.json @@ -1,6 +1,6 @@ { "name": "nc-lib-gui", - "version": "0.1.216", + "version": "0.1.217", "description": "> TODO: description", "author": "“pranavxc” ", "homepage": "https://gitlab.com/xgenecloud-ts/xgenecloud-ts#readme", diff --git a/packages/nocodb/package-lock.json b/packages/nocodb/package-lock.json index 63befd9722..bdfdceeec1 100644 --- a/packages/nocodb/package-lock.json +++ b/packages/nocodb/package-lock.json @@ -11126,9 +11126,9 @@ "integrity": "sha512-3AryS9uwa5NfISLxMciUonrH7YfXp+nlahB9T7girXIsLQrmwX4MdnuKs32akduCOGpKmjTJSWmATULbuMkbfw==" }, "nc-help": { - "version": "0.1.104", - "resolved": "https://registry.npmjs.org/nc-help/-/nc-help-0.1.104.tgz", - "integrity": "sha512-Tbn+RrRg8ELwXZtu+Lu0cunNKyB8fj7d91JAd5U2sjV3r+02PExpZ0PWT7bFwkNcEVDItQtAvzNl7uoLgchzzw==", + "version": "0.1.107", + "resolved": "https://registry.npmjs.org/nc-help/-/nc-help-0.1.107.tgz", + "integrity": "sha512-Lgqx9i1Oxt4WGTU+D35KyhKpwWgmHKzI7P1yPcqhsWNrLjnR7XHEumjKT1UovyJo5zkkiMCFnaxOGbWCnM9waA==", "requires": { "axios": "^0.21.1", "boxen": "^4.2.0", @@ -11203,9 +11203,9 @@ } }, "nc-lib-gui": { - "version": "0.1.216", - "resolved": "https://registry.npmjs.org/nc-lib-gui/-/nc-lib-gui-0.1.216.tgz", - "integrity": "sha512-zVQlsjK0fCZnlX8k0Rky8RKCfdMYmcVDwn1Kjff1JdXMduuFunjGAz7zFDBJNBY8DflmJSrLyDvZ9GR9i+kMUw==", + "version": "0.1.217", + "resolved": "https://registry.npmjs.org/nc-lib-gui/-/nc-lib-gui-0.1.217.tgz", + "integrity": "sha512-SA2RuY8g62qa9d9FwGsxd+lk5eE11EzKDQMSQyCcJhMgDeMrNUsbpoVPCB/zxo71kR3MqQa1tNYO5uIgwx6vtg==", "requires": { "axios": "^0.19.2", "body-parser": "^1.19.0", diff --git a/packages/nocodb/package.json b/packages/nocodb/package.json index c7eb0513be..9e61bcb0a1 100644 --- a/packages/nocodb/package.json +++ b/packages/nocodb/package.json @@ -1,6 +1,6 @@ { "name": "nocodb", - "version": "0.9.25", + "version": "0.9.26", "description": "xc-cli", "main": "dist/bundle.js", "repository": "https://github.com/nocodb/nocodb/nc-cli", @@ -54,8 +54,9 @@ "postbuild": "npm run copy-files", "copy-files": "copyfiles -u 1 \"src/**/*.ejs\" build/main && copyfiles -u 1 \"src/**/*.ejs\" build/module && copyfiles -u 1 \"src/**/*.ejs\" docker", "docker:build": "EE=\"true-xc-test\" webpack --config docker/webpack.config.js", - "docker:image:build": "docker build . -t nocodb/nocodb:latest -t nocodb/nocodb:0.9.25 --no-cache", - "docker:image:deploy": "docker push nocodb/nocodb:latest && docker push nocodb/nocodb:0.9.25", + "docker:image:build": "docker build . -t nocodb/nocodb:latest -t nocodb/nocodb:0.9.26 --no-cache", + "docker:image:buildx": "docker buildx build . --platform linux/arm64 -t nocodb/nocodb:arm64 --no-cache", + "docker:image:deploy": "docker push nocodb/nocodb:latest && docker push nocodb/nocodb:0.9.26", "docker:build:publish:image": "npm run build && npm run docker:build && npm run docker:image:build && npm run docker:image:deploy", "docker:s3:image:build": "docker build . --file litestream/Dockerfile -t xgenecloud/xc-s3:latest -t xgenecloud/xc-s3:0.0.1 --no-cache", "docker:s3:image:deploy": "docker push xgenecloud/xc-s3:latest && docker push xgenecloud/xc-s3:0.0.1", @@ -123,6 +124,7 @@ "handlebars": "^4.7.6", "import-fresh": "^3.2.1", "inflection": "^1.12.0", + "is-docker": "^2.2.1", "js-beautify": "^1.11.0", "json2csv": "^5.0.6", "jsonfile": "^6.1.0", @@ -140,8 +142,8 @@ "mysql2": "^2.2.5", "nanoid": "^3.1.20", "nc-common": "0.0.6", - "nc-help": "^0.1.104", - "nc-lib-gui": "^0.1.216", + "nc-help": "^0.1.107", + "nc-lib-gui": "^0.1.217", "nc-plugin": "^0.1.1", "nodemailer": "^6.4.10", "ora": "^4.0.4", diff --git a/packages/nocodb/src/lib/noco/meta/NcMetaMgr.ts b/packages/nocodb/src/lib/noco/meta/NcMetaMgr.ts index 8398e981b7..1786b18ccb 100644 --- a/packages/nocodb/src/lib/noco/meta/NcMetaMgr.ts +++ b/packages/nocodb/src/lib/noco/meta/NcMetaMgr.ts @@ -38,17 +38,18 @@ import ExpressXcTsRoutesHm from "../../sqlMgr/code/routes/xc-ts/ExpressXcTsRoute import ExpressXcTsRoutesBt from "../../sqlMgr/code/routes/xc-ts/ExpressXcTsRoutesBt"; import ExpressXcTsRoutes from "../../sqlMgr/code/routes/xc-ts/ExpressXcTsRoutes"; import NcPluginMgr from "../plugins/NcPluginMgr"; - +import isDocker from 'is-docker'; // import packageInfo from '../../../../package.json' // require('pkginfo')(module, 'version'); const XC_PLUGIN_DET = 'XC_PLUGIN_DET'; -let packageInfo:any = {}; -try{ - packageInfo = JSON.parse(fs.readFileSync('package.json','utf8')); -}catch (_e) {} +let packageInfo: any = {}; +try { + packageInfo = JSON.parse(fs.readFileSync('package.json', 'utf8')); +} catch (_e) { +} export default class NcMetaMgr { public projectConfigs = {}; @@ -1083,6 +1084,9 @@ export default class NcMetaMgr { case 'xcVirtualTableUpdate': result = await this.xcVirtualTableUpdate(args); break; + case 'ncProjectInfo': + result = await this.ncProjectInfo(args); + break; case 'xcVirtualTableDelete': result = await this.xcVirtualTableDelete(args, req); break; @@ -3106,6 +3110,19 @@ export default class NcMetaMgr { } + protected async ncProjectInfo(args) { + + const config = this.projectConfigs[this.getProjectId(args)]; + return { + node: process.version, + arch: process.arch, + platform: process.platform, + docker: isDocker(), + database: config.envs?.[process.env.NODE_ENV || 'dev']?.db?.[0]?.client, + packageVersion: packageInfo?.version + } + } + protected async xcVirtualTableList(args): Promise { return (await this.xcMeta.metaList(this.getProjectId(args), this.getDbAlias(args), 'nc_models', { xcCondition: { diff --git a/packages/nocodb/src/lib/sqlMgr/SqlMgr.ts b/packages/nocodb/src/lib/sqlMgr/SqlMgr.ts index 2a9f786ce2..92c6393b2e 100644 --- a/packages/nocodb/src/lib/sqlMgr/SqlMgr.ts +++ b/packages/nocodb/src/lib/sqlMgr/SqlMgr.ts @@ -820,7 +820,7 @@ export default class SqlMgr { migrationSteps: 9999, folder: this.currentProjectFolder }; - console.log(`Migration up args for '${op}'`, migrationArgs); + // console.log(`Migration up args for '${op}'`, migrationArgs); await this.migrator().migrationsUp(migrationArgs); }