From e3b6839e462b36ef488ca789eab778f319c22f56 Mon Sep 17 00:00:00 2001 From: Raju Udava <86527202+dstala@users.noreply.github.com> Date: Mon, 16 May 2022 13:14:00 +0530 Subject: [PATCH 1/5] chore: i18n (zh_cn) corrections <@Tim-Paik> Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> --- packages/nc-gui/lang/zh_CN.json | 64 ++++++++++++++++----------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/packages/nc-gui/lang/zh_CN.json b/packages/nc-gui/lang/zh_CN.json index a39e3e8eab..38990ec059 100644 --- a/packages/nc-gui/lang/zh_CN.json +++ b/packages/nc-gui/lang/zh_CN.json @@ -38,7 +38,7 @@ "signIn": "登录", "signOut": "登出", "required": "必填项", - "preferred": "Preferred", + "preferred": "首选", "mandatory": "强制的", "loading": "加载中...", "title": "标题", @@ -59,7 +59,7 @@ "objects": { "project": "项目", "projects": "项目", - "table": "表格", + "table": "网格", "tables": "表格", "field": "字段", "fields": "字段", @@ -74,7 +74,7 @@ "view": "视图", "views": "视图", "viewType": { - "grid": "网格", + "grid": "表格", "gallery": "画廊", "form": "表单", "kanban": "看板", @@ -154,7 +154,7 @@ "teamAndAuth": "团队和认证", "rolesUserMgmt": "角色和用户管理", "userMgmt": "用户账号管理", - "apiTokenMgmt": "API 令牌管理", + "apiTokenMgmt": "API Tokens 管理", "rolesMgmt": "角色管理", "projMeta": "项目基础信息", "metaMgmt": "项目基础信息管理", @@ -170,12 +170,12 @@ "headCreateProject": "新建项目 | NocoDB", "headLogin": "登录 | NocoDB", "resetPassword": "重置密码", - "teamAndSettings": "Team & Settings", - "apiDocs": "API Docs", + "teamAndSettings": "团队和设置", + "apiDocs": "API 文档", "importFromAirtable": "Import From Airtable" }, "labels": { - "notifyVia": "通知Via", + "notifyVia": "通知通过", "projName": "项目名", "tableName": "表名称", "viewName": "查看名称", @@ -192,7 +192,7 @@ "port": "端口号", "username": "用户名", "password": "密码", - "schemaName": "Schema name", + "schemaName": "架构名称", "action": "行动", "actions": "行动", "operation": "操作", @@ -201,7 +201,7 @@ "description": "描述", "authentication": "验证", "token": "令牌", - "where": "where", + "where": "在哪里", "cache": "缓存", "chat": "聊天", "email": "电子邮件", @@ -225,15 +225,15 @@ }, "community": { "starUs1": "点赞", - "starUs2": "我们在 Github", + "starUs2": "我们的 Github", "bookDemo": "查看免费演示", "getAnswered": "通过这里让你的问题得到解答", "joinDiscord": "加入 Discord", - "joinCommunity": "Join NocoDB Community", - "joinReddit": "加入/r/NocoDB", + "joinCommunity": "加入 NocoDB 社区", + "joinReddit": "加入 /r/NocoDB", "followNocodb": "关注 NocoDB" }, - "docReference": "文件参考文献", + "docReference": "参考文档", "selectUserRole": "选择用户角色", "childTable": "子表", "childColumn": "子列", @@ -256,7 +256,7 @@ "excel": "从Excel创建项目", "template": "从模板创建项目" }, - "OkSaveProject": "好的和保存项目", + "OkSaveProject": "确认并保存项目", "upgrade": { "available": "升级可用", "releaseNote": "发行说明", @@ -265,7 +265,7 @@ "translate": "帮助翻译", "account": { "authToken": "复制auth令牌", - "swagger": "Swagger Apis Doc.", + "swagger": "Swagger Apis 文档", "projInfo": "复制项目信息", "themes": "主题" }, @@ -287,7 +287,7 @@ "editUser": "编辑用户", "deleteUser": "从项目中删除用户", "resendInvite": "重新发送邀请电子邮件", - "copyInviteURL": "复制邀请URL.", + "copyInviteURL": "复制邀请链接", "newRole": "新角色", "reloadRoles": "重新加载角色", "nextPage": "下一页", @@ -306,10 +306,10 @@ "insertRow": "插入新行", "deleteRow": "删除行", "deleteSelectedRow": "删除所选行", - "importExcel": "导入Excel.", + "importExcel": "导入Excel", "importCSV": "Import CSV", - "downloadCSV": "下载为CSV.", - "uploadCSV": "上传CSV.", + "downloadCSV": "下载为CSV", + "uploadCSV": "上传CSV", "import": "导入", "importMetadata": "导入元数据", "exportMetadata": "导出元数据", @@ -326,16 +326,16 @@ "createGrid": "创建网格视图", "createGallery": "创建画廊视图", "createCalendar": "创建日历视图", - "createKanban": "创建寻呼视图", + "createKanban": "创建看板视图", "createForm": "创建表单视图", "showSystemFields": "显示系统字段", - "copyUrl": "复制URL.", + "copyUrl": "复制链接", "openTab": "打开新标签", - "iFrame": "复制嵌入式HTML代码", + "iFrame": "复制嵌入HTML代码", "addWebhook": "添加新的webhook.", - "newToken": "添加新令牌", + "newToken": "添加新 Token", "exportZip": "导出为zip格式", - "importZip": "zip格式导入", + "importZip": "导入zip格式", "metaSync": "立即同步", "settings": "设置", "previewAs": "预览", @@ -348,7 +348,7 @@ }, "tooltip": { "saveChanges": "保存更改", - "xcDB": "新建一个项目", + "xcDB": "新建项目", "extDB": "支持 MySQL、PostgreSQL、SQL Server 和 SQLite", "apiRest": "通过 REST APIs 访问", "apiGQL": "通过 GraphQL APIs 访问", @@ -365,7 +365,7 @@ "reloadList": "重新加载列表", "metaSync": "同步元数据", "sqlMigration": "重新加载迁移", - "updateRestart": "更新 & 重启", + "updateRestart": "更新并重启", "cancelReturn": "取消并返回", "exportMetadata": "从元数据表格导出所有元数据到元数据目录", "importMetadata": "从元数据目录导入所有的元数据到元数据表格", @@ -401,7 +401,7 @@ "excelURL": "输入Excel文件URL", "csvURL": "Enter CSV file URL", "footMsg": "要解析为推断数据类型的行数", - "excelImport": "板材可用于进口", + "excelImport": "可用于导入的表格", "exportMetadata": "您想从元表导出元数据吗?", "importMetadata": "您想从元表导入元数据吗?", "clearMetadata": "你想清除元表中的元数据吗?", @@ -410,7 +410,7 @@ "startProject": "你想启动这个项目吗?", "restartProject": "你想重新启动项目吗?", "deleteProject": "你想删除这个项目吗?", - "shareBasePrivate": "产生公开可享的Readonly Base", + "shareBasePrivate": "产生公开共享的只读基础", "shareBasePublic": "互联网上的任何人都可以查看", "userInviteNoSMTP": "看起来你还没有配置邮件!请复制上面的邀请链接并将其发送给", "dragDropHide": "在此处拖放字段以隐藏", @@ -485,7 +485,7 @@ "tableNameInDb": "数据库中保存的表名" }, "error": { - "searchProject": "你的搜索: {search} 没有发现匹配的结果", + "searchProject": "搜索: {search} 没有发现匹配的结果", "invalidChar": "文件夹路径中的字符无效。", "invalidDbCredentials": "无效的数据库凭据。", "unableToConnectToDb": "无法连接到数据库,请检查您的数据库是否已启动。", @@ -503,14 +503,14 @@ "exportMetadata": "项目元数据成功导出", "importMetadata": "项目元数据成功导入", "clearMetadata": "项目元数据已成功清除", - "stopProject": "项目成功停止了", + "stopProject": "项目成功停止", "startProject": "项目成功开始", "restartProject": "项目成功重新启动", "deleteProject": "项目已成功删除", "authToken": "验证令牌复制到剪贴板", "projInfo": "将项目信息复制到剪贴板", - "inviteUrlCopy": "复制邀请URL到剪贴板", - "createView": "查看成功创建", + "inviteUrlCopy": "复制邀请链接到剪贴板", + "createView": "视图创建成功", "formEmailSMTP": "请激活App Store中的SMTP插件以启用电子邮件通知", "collabView": "成功转换为协作视图", "lockedView": "成功转换为锁定视图", From 046d3b7fbd78b696d5307b8112c2951b6f87ed39 Mon Sep 17 00:00:00 2001 From: Raju Udava <86527202+dstala@users.noreply.github.com> Date: Mon, 16 May 2022 13:29:43 +0530 Subject: [PATCH 2/5] Image text corrections (@Tim-Paik) --- scripts/markdown/readme/languages/chinese.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/markdown/readme/languages/chinese.md b/scripts/markdown/readme/languages/chinese.md index cd672cff6e..61db49f12a 100644 --- a/scripts/markdown/readme/languages/chinese.md +++ b/scripts/markdown/readme/languages/chinese.md @@ -87,22 +87,22 @@ npm start ![1](https://user-images.githubusercontent.com/86527202/136066713-5408634f-5469-40eb-94c9-7eafae5e179c.png)
-![2](https://user-images.githubusercontent.com/86527202/136066729-9b6a261a-231d-4d7f-9fc2-061c301d6192.png) +![2](https://user-images.githubusercontent.com/86527202/168545293-b48a4237-8646-4f9a-a56b-56d5c55adc79.jpg)
![5](https://user-images.githubusercontent.com/86527202/136066734-3f25aecc-bb7e-4db7-81c4-00b368d799d3.png)
-![6](https://user-images.githubusercontent.com/86527202/136066735-2d4cb656-02dc-4233-ac4a-1ba9bd8acdf0.png) +![6](https://user-images.githubusercontent.com/86527202/168545527-3948125d-1640-4c07-ac80-15db9a85f66f.jpg)
-![7](https://user-images.githubusercontent.com/86527202/136066737-eb6a56fb-5e2e-4423-912b-ced32e8b479c.png) +![7](https://user-images.githubusercontent.com/86527202/168545772-dfbffe13-bcf6-4a49-8a10-1bc8a933d77e.jpg)
-![8](https://user-images.githubusercontent.com/86527202/136066742-94c7eff7-d88e-4002-ad72-ffd23090847c.png) +![8](https://user-images.githubusercontent.com/86527202/168545839-0ba950a4-400f-45b2-b2db-b22b1853af4a.jpg)
-![9](https://user-images.githubusercontent.com/86527202/136066743-1b4030c5-042f-4338-99b0-06237878ce53.png) +![9](https://user-images.githubusercontent.com/86527202/168545872-c2a4b63a-9dc9-4c12-add7-69d5f4d0a6e1.jpg)
![9a](https://user-images.githubusercontent.com/86527202/136066745-9797775d-7db0-4681-ab10-d7ecbbd972ef.png) From c34090b0c5384fafb600e91707e368487f2fda69 Mon Sep 17 00:00:00 2001 From: Raju Udava <86527202+dstala@users.noreply.github.com> Date: Mon, 16 May 2022 13:34:56 +0530 Subject: [PATCH 3/5] fix: emoji in table/column name handling during import Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> --- .../src/lib/noco/meta/api/sync/helpers/job.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/nocodb/src/lib/noco/meta/api/sync/helpers/job.ts b/packages/nocodb/src/lib/noco/meta/api/sync/helpers/job.ts index e9a8848bb9..99557902ad 100644 --- a/packages/nocodb/src/lib/noco/meta/api/sync/helpers/job.ts +++ b/packages/nocodb/src/lib/noco/meta/api/sync/helpers/job.ts @@ -95,7 +95,7 @@ export default async ( async function getAtableSchema(sDB) { const start = Date.now(); - if(sDB.shareId.startsWith('exp')) { + if (sDB.shareId.startsWith('exp')) { const template = await FetchAT.readTemplate(sDB.shareId); await FetchAT.initialize(template.template.exploreApplication.shareId); } else { @@ -160,9 +160,14 @@ export default async ( function nc_sanitizeName(name) { // knex complains use of '?' in field name // good to replace all special characters by _ in one go + + // https://stackoverflow.com/questions/18862256/how-to-detect-emoji-using-javascript + const regex = /(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/g; + const col_name = name - .replace(/\?/g, 'QQ') + .replace(/\?/g, '_') .replace('.', '_') + .replace(regex, '_') .trim(); return col_name; @@ -1980,7 +1985,9 @@ export default async ( progress(`Linked data to ${ncTbl.title}`); } } catch (error) { - progress(`There was an error while migrating data! Please make sure your API key (${syncDB.apiKey}) is correct.`); + progress( + `There was an error while migrating data! Please make sure your API key (${syncDB.apiKey}) is correct.` + ); progress(`Error: ${error}`); } } From aa7a084a0c8c5dd4059fc4f076d23fd30a06b94e Mon Sep 17 00:00:00 2001 From: Raju Udava <86527202+dstala@users.noreply.github.com> Date: Mon, 16 May 2022 15:51:30 +0530 Subject: [PATCH 4/5] Update import-airtable-to-sql-database-within-a-minute-for-free.md --- ...o-sql-database-within-a-minute-for-free.md | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/packages/noco-docs/content/en/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free.md b/packages/noco-docs/content/en/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free.md index 977a6e746d..0ff7b9565c 100644 --- a/packages/noco-docs/content/en/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free.md +++ b/packages/noco-docs/content/en/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free.md @@ -1,4 +1,3 @@ ---- title: 'Import: Airtable to NocoDB' description: 'Import: Airtable to NocoDB' position: 1150 @@ -9,7 +8,26 @@ menuTitle: 'Import: Airtable to NocoDB' ## Import Airtable to NocoDB ### Find & enter your Airtable API Key -- TODO +Copy API Key from [Airtable Accounts](https://airtable.com/account) page + +![Screenshot 2022-05-16 at 1 50 07 PM](https://user-images.githubusercontent.com/86527202/168569905-48c16d6d-c44a-4337-be49-0ac3dc1f7b75.png) + + ### Share you Airtable base -- TODO \ No newline at end of file +Detailed procedure is captured [here](https://support.airtable.com/hc/en-us/articles/205752117-Creating-a-base-share-link-or-a-view-share-link#basesharelink) + +Quick steps + +1. Open `Share` menu in your Project/ Base + +![Screenshot 2022-05-16 at 3 47 27 PM](https://user-images.githubusercontent.com/86527202/168572054-533b8c19-d76e-4add-b876-f1e0570ac33c.png) + + + +3. Open tab `Share Publicly` +4. Enable `Turn on full base access` +5. Copy generated shared base URL + +![Screenshot 2022-05-16 at 3 41 54 PM](https://user-images.githubusercontent.com/86527202/168572062-5dee065d-2394-426d-8f43-77ecc0c9b73f.png) + From 8d33fa9b963b76f71f76c9e217cb2c85ab7495e1 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Mon, 16 May 2022 16:00:36 +0530 Subject: [PATCH 5/5] Feat : UIDT impmporovements (#2026) * wip: rating cell ui implementation Signed-off-by: Pranav C * wip: migration for meta column data field Signed-off-by: Pranav C * wip: rating column options Signed-off-by: Pranav C * feat: rating cell creation and mapping metadata Signed-off-by: Pranav C * refactor: change default type to int for rating Signed-off-by: Pranav C * feat: add email cell Signed-off-by: Pranav C * feat: accept invalid values for columns if validation disabled Signed-off-by: Pranav C * refactor: remove additional options Signed-off-by: Pranav C * feat: checkbox customization Signed-off-by: Pranav C * refactor: move validate checkbox to advance option Signed-off-by: Pranav C * refactor: add tick icon in checkbox Signed-off-by: Pranav C * refactor: start rating max value from 1 Signed-off-by: Pranav C * refactor: minor ui corrections Signed-off-by: Pranav C * fix: load rating component in gallery view Signed-off-by: Pranav C * fix: use default icon and color if meta missing(checkbox and rating) re #2036 Signed-off-by: Pranav C * fix: cache column with parsed metadata re #2038 Signed-off-by: Pranav C * fix: convert old rating column to number type Signed-off-by: Pranav C * refactor: migration filename correction Signed-off-by: Pranav C * refactor: component name Signed-off-by: Pranav C --- .../project/spreadsheet/components/Cell.vue | 11 ++- .../spreadsheet/components/EditColumn.vue | 38 +++++++ .../spreadsheet/components/EditableCell.vue | 19 +++- .../spreadsheet/components/cell/EmailCell.vue | 22 +++++ .../spreadsheet/components/cell/UrlCell.vue | 14 ++- .../components/editColumn/RatingOptions.vue | 98 +++++++++++++++++++ .../components/editColumn/checkboxOptions.vue | 95 ++++++++++++++++++ .../components/editableCell/BooleanCell.vue | 36 +++++-- .../editableCell/EditableUrlCell.vue | 9 +- .../components/editableCell/RatingCell.vue | 71 ++++++++++++++ .../project/spreadsheet/mixins/cell.js | 6 ++ .../project/spreadsheet/views/GridView.vue | 70 +++++++------ packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts | 84 ++++++++-------- packages/nocodb-sdk/src/lib/sqlUi/MysqlUi.ts | 74 +++++++------- packages/nocodb-sdk/src/lib/sqlUi/OracleUi.ts | 36 +++---- packages/nocodb-sdk/src/lib/sqlUi/PgUi.ts | 97 +++++++++--------- packages/nocodb-sdk/src/lib/sqlUi/SqliteUi.ts | 94 +++++++++--------- .../lib/dataMapper/lib/sql/BaseModelSqlv2.ts | 3 + packages/nocodb/src/lib/noco-models/Column.ts | 40 +++++++- .../lib/noco/common/XcMigrationSourcev2.ts | 6 +- .../nc_015_add_meta_col_in_column_table.ts | 38 +++++++ .../jobs/ncProjectUpgraderV2_0090000.ts | 4 + 22 files changed, 728 insertions(+), 237 deletions(-) create mode 100644 packages/nc-gui/components/project/spreadsheet/components/cell/EmailCell.vue create mode 100644 packages/nc-gui/components/project/spreadsheet/components/editColumn/RatingOptions.vue create mode 100644 packages/nc-gui/components/project/spreadsheet/components/editColumn/checkboxOptions.vue create mode 100644 packages/nc-gui/components/project/spreadsheet/components/editableCell/RatingCell.vue create mode 100644 packages/nocodb/src/lib/noco/migrationsv2/nc_015_add_meta_col_in_column_table.ts diff --git a/packages/nc-gui/components/project/spreadsheet/components/Cell.vue b/packages/nc-gui/components/project/spreadsheet/components/Cell.vue index d19ab48087..260e721fc4 100644 --- a/packages/nc-gui/components/project/spreadsheet/components/Cell.vue +++ b/packages/nc-gui/components/project/spreadsheet/components/Cell.vue @@ -11,11 +11,14 @@ + - + + + {{ value }} @@ -30,12 +33,14 @@ import SetListCell from '~/components/project/spreadsheet/components/cell/SetLis import EnumCell from '~/components/project/spreadsheet/components/cell/EnumCell' import EditableAttachmentCell from '~/components/project/spreadsheet/components/editableCell/EditableAttachmentCell' import BooleanCell from '~/components/project/spreadsheet/components/cell/BooleanCell' +import EmailCell from '~/components/project/spreadsheet/components/cell/EmailCell' +import RatingCell from '~/components/project/spreadsheet/components/editableCell/RatingCell' export default { name: 'TableCell', - components: { TimeCell, DateTimeCell, DateCell, JsonCell, UrlCell, EditableAttachmentCell, EnumCell, SetListCell, BooleanCell }, + components: { RatingCell, EmailCell, TimeCell, DateTimeCell, DateCell, JsonCell, UrlCell, EditableAttachmentCell, EnumCell, SetListCell, BooleanCell }, mixins: [cell], - props: ['value', 'dbAlias', 'isLocked', 'selected'], + props: ['value', 'dbAlias', 'isLocked', 'selected', 'column'], computed: { title() { if (typeof this.value === 'string') { return this.value } diff --git a/packages/nc-gui/components/project/spreadsheet/components/EditColumn.vue b/packages/nc-gui/components/project/spreadsheet/components/EditColumn.vue index 0f1b4d1f6a..c426556905 100644 --- a/packages/nc-gui/components/project/spreadsheet/components/EditColumn.vue +++ b/packages/nc-gui/components/project/spreadsheet/components/EditColumn.vue @@ -137,6 +137,21 @@ @input="newColumn.altered = newColumn.altered || 2" /> + + + + + + + + + + +