diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/.npmignore b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/.npmignore deleted file mode 100644 index 65f5e8779f..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -/node_modules -/src diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/README.md b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/README.md deleted file mode 100644 index 92873e019f..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/README.md +++ /dev/null @@ -1 +0,0 @@ -# @nocobase/plugin-filter-operator-multiple-keywords diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/client.d.ts b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/client.d.ts deleted file mode 100644 index 6c459cbac4..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/client.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './dist/client'; -export { default } from './dist/client'; diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/client.js b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/client.js deleted file mode 100644 index b6e3be70e6..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/client.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/client/index.js'); diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/package.json b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/package.json deleted file mode 100644 index f0a21d71e0..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "@nocobase/plugin-filter-operator-multiple-keywords", - "version": "1.7.0-beta.18", - "main": "dist/server/index.js", - "displayName": "Multiple keywords", - "displayName.zh-CN": "多关键词筛选", - "description": "Support for filtering multiple keywords in a single line text field.", - "description.zh-CN": "单行文本字段支持多关键词筛选。", - "homepage": "https://docs.nocobase.com/handbook/", - "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/", - "keywords": [ - "Multiple keywords" - ], - "dependencies": { - "xlsx": "0.18.5" - }, - "peerDependencies": { - "@nocobase/client": "1.x", - "@nocobase/server": "1.x", - "@nocobase/test": "1.x" - } -} diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/server.d.ts b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/server.d.ts deleted file mode 100644 index c41081ddc6..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/server.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './dist/server'; -export { default } from './dist/server'; diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/server.js b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/server.js deleted file mode 100644 index 972842039a..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/server.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dist/server/index.js'); diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/client/MultipleKeywordsInput.tsx b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/client/MultipleKeywordsInput.tsx deleted file mode 100644 index 577a50e863..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/client/MultipleKeywordsInput.tsx +++ /dev/null @@ -1,201 +0,0 @@ -/** - * This file is part of the NocoBase (R) project. - * Copyright (c) 2020-2024 NocoBase Co., Ltd. - * Authors: NocoBase Team. - * - * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. - * For more information, please refer to: https://www.nocobase.com/agreement. - */ - -import { RemoteSelect, useCollection } from '@nocobase/client'; -import React, { FC, useRef, useState } from 'react'; -import { Button, Space, Modal, message, Select, Alert } from 'antd'; -import { useFieldSchema } from '@formily/react'; -import * as XLSX from 'xlsx'; -import { useT } from './locale'; - -export const MultipleKeywordsInput: FC = (props) => { - const collection = useCollection(); - const fieldSchema = useFieldSchema(); - const fileInputRef = useRef(null); - const [importLoading, setImportLoading] = useState(false); - const [columnModal, setColumnModal] = useState(false); - const [columns, setColumns] = useState([]); - const [selectedColumns, setSelectedColumns] = useState([]); - const [excelData, setExcelData] = useState([]); - const t = useT(); - - const handleImportButtonClick = () => { - fileInputRef.current?.click(); - }; - - const handleFileChange = async (event: React.ChangeEvent) => { - const file = event.target.files?.[0]; - if (file) { - try { - setImportLoading(true); - - // 读取 Excel 文件 - const data = await readExcel(file); - if (data.length === 0) { - message.error('Excel 文件为空'); - setImportLoading(false); - return; - } - - // 提取所有列名 - const extractedColumns = Object.keys(data[0]); - setColumns(extractedColumns); - setExcelData(data); - - // 如果只有一列,直接导入 - if (extractedColumns.length === 1) { - const keywords = extractKeywordsFromColumn(data, extractedColumns[0]); - handleImportKeywords(keywords); - } else { - // 如果有多列,打开选择对话框 - setColumnModal(true); - } - } catch (error) { - console.error('解析 Excel 文件出错:', error); - message.error('解析 Excel 文件失败'); - } finally { - setImportLoading(false); - // 清空文件输入,以便下次选择同一文件时仍能触发 change 事件 - event.target.value = ''; - } - } - }; - - // 读取 Excel 文件内容 - const readExcel = (file: File): Promise => { - return new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.onload = (e) => { - try { - const data = e.target?.result; - const workbook = XLSX.read(data, { type: 'binary' }); - const firstSheetName = workbook.SheetNames[0]; - const worksheet = workbook.Sheets[firstSheetName]; - const jsonData = XLSX.utils.sheet_to_json(worksheet); - resolve(jsonData); - } catch (error) { - reject(error); - } - }; - reader.onerror = (error) => reject(error); - reader.readAsBinaryString(file); - }); - }; - - // 从指定列提取关键词 - const extractKeywordsFromColumn = (data: any[], columnName: string): string => { - return data - .map((row) => row[columnName]) - .filter((value) => value !== undefined && value !== null && value !== '') - .join(','); - }; - - // 从多个列提取关键词 - const extractKeywordsFromColumns = (data: any[], columnNames: string[]): string => { - const keywordSet = new Set(); - - data.forEach((row) => { - columnNames.forEach((column) => { - const value = row[column]; - if (value !== undefined && value !== null && value !== '') { - keywordSet.add(value.toString()); - } - }); - }); - - return Array.from(keywordSet).join(','); - }; - - // 处理导入关键词到输入框 - const handleImportKeywords = (keywords: string) => { - if (!keywords) { - message.warning('未找到有效关键词'); - return; - } - - // 将关键词设置到输入框 - if (props.onChange) { - const keywordArray = keywords.split(',').filter(Boolean); - props.onChange(keywordArray); - message.success(`成功导入 ${keywordArray.length} 个关键词`); - } - }; - - // 处理列选择确认 - const handleColumnSelectConfirm = () => { - if (selectedColumns.length === 0) { - message.warning('请至少选择一列'); - return; - } - - const keywords = extractKeywordsFromColumns(excelData, selectedColumns); - handleImportKeywords(keywords); - setColumnModal(false); - }; - - return ( - <> - - - - - - - {/* 列选择对话框 */} - setColumnModal(false)} - okText="确认" - cancelText="取消" - > - - - - - ); -}; diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/client/client.d.ts b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/client/client.d.ts deleted file mode 100644 index 4e96f83fa1..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/client/client.d.ts +++ /dev/null @@ -1,249 +0,0 @@ -/** - * This file is part of the NocoBase (R) project. - * Copyright (c) 2020-2024 NocoBase Co., Ltd. - * Authors: NocoBase Team. - * - * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. - * For more information, please refer to: https://www.nocobase.com/agreement. - */ - -// CSS modules -type CSSModuleClasses = { readonly [key: string]: string }; - -declare module '*.module.css' { - const classes: CSSModuleClasses; - export default classes; -} -declare module '*.module.scss' { - const classes: CSSModuleClasses; - export default classes; -} -declare module '*.module.sass' { - const classes: CSSModuleClasses; - export default classes; -} -declare module '*.module.less' { - const classes: CSSModuleClasses; - export default classes; -} -declare module '*.module.styl' { - const classes: CSSModuleClasses; - export default classes; -} -declare module '*.module.stylus' { - const classes: CSSModuleClasses; - export default classes; -} -declare module '*.module.pcss' { - const classes: CSSModuleClasses; - export default classes; -} -declare module '*.module.sss' { - const classes: CSSModuleClasses; - export default classes; -} - -// CSS -declare module '*.css' { } -declare module '*.scss' { } -declare module '*.sass' { } -declare module '*.less' { } -declare module '*.styl' { } -declare module '*.stylus' { } -declare module '*.pcss' { } -declare module '*.sss' { } - -// Built-in asset types -// see `src/node/constants.ts` - -// images -declare module '*.apng' { - const src: string; - export default src; -} -declare module '*.png' { - const src: string; - export default src; -} -declare module '*.jpg' { - const src: string; - export default src; -} -declare module '*.jpeg' { - const src: string; - export default src; -} -declare module '*.jfif' { - const src: string; - export default src; -} -declare module '*.pjpeg' { - const src: string; - export default src; -} -declare module '*.pjp' { - const src: string; - export default src; -} -declare module '*.gif' { - const src: string; - export default src; -} -declare module '*.svg' { - const src: string; - export default src; -} -declare module '*.ico' { - const src: string; - export default src; -} -declare module '*.webp' { - const src: string; - export default src; -} -declare module '*.avif' { - const src: string; - export default src; -} - -// media -declare module '*.mp4' { - const src: string; - export default src; -} -declare module '*.webm' { - const src: string; - export default src; -} -declare module '*.ogg' { - const src: string; - export default src; -} -declare module '*.mp3' { - const src: string; - export default src; -} -declare module '*.wav' { - const src: string; - export default src; -} -declare module '*.flac' { - const src: string; - export default src; -} -declare module '*.aac' { - const src: string; - export default src; -} -declare module '*.opus' { - const src: string; - export default src; -} -declare module '*.mov' { - const src: string; - export default src; -} -declare module '*.m4a' { - const src: string; - export default src; -} -declare module '*.vtt' { - const src: string; - export default src; -} - -// fonts -declare module '*.woff' { - const src: string; - export default src; -} -declare module '*.woff2' { - const src: string; - export default src; -} -declare module '*.eot' { - const src: string; - export default src; -} -declare module '*.ttf' { - const src: string; - export default src; -} -declare module '*.otf' { - const src: string; - export default src; -} - -// other -declare module '*.webmanifest' { - const src: string; - export default src; -} -declare module '*.pdf' { - const src: string; - export default src; -} -declare module '*.txt' { - const src: string; - export default src; -} - -// wasm?init -declare module '*.wasm?init' { - const initWasm: (options?: WebAssembly.Imports) => Promise; - export default initWasm; -} - -// web worker -declare module '*?worker' { - const workerConstructor: { - new(options?: { name?: string }): Worker; - }; - export default workerConstructor; -} - -declare module '*?worker&inline' { - const workerConstructor: { - new(options?: { name?: string }): Worker; - }; - export default workerConstructor; -} - -declare module '*?worker&url' { - const src: string; - export default src; -} - -declare module '*?sharedworker' { - const sharedWorkerConstructor: { - new(options?: { name?: string }): SharedWorker; - }; - export default sharedWorkerConstructor; -} - -declare module '*?sharedworker&inline' { - const sharedWorkerConstructor: { - new(options?: { name?: string }): SharedWorker; - }; - export default sharedWorkerConstructor; -} - -declare module '*?sharedworker&url' { - const src: string; - export default src; -} - -declare module '*?raw' { - const src: string; - export default src; -} - -declare module '*?url' { - const src: string; - export default src; -} - -declare module '*?inline' { - const src: string; - export default src; -} diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/client/index.tsx b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/client/index.tsx deleted file mode 100644 index b1ce45876e..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/client/index.tsx +++ /dev/null @@ -1,43 +0,0 @@ -/** - * This file is part of the NocoBase (R) project. - * Copyright (c) 2020-2024 NocoBase Co., Ltd. - * Authors: NocoBase Team. - * - * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. - * For more information, please refer to: https://www.nocobase.com/agreement. - */ - -import { Plugin } from '@nocobase/client'; -import { MultipleKeywordsInput } from './MultipleKeywordsInput'; - -export class PluginFilterOperatorMultipleKeywordsClient extends Plugin { - async afterAdd() { - // await this.app.pm.add() - } - - async beforeLoad() {} - - // You can get and modify the app instance here - async load() { - this.app.addFieldInterfaceOperator('input', { - label: '{{t("等于任意一个")}}', - value: '$in', - schema: { - 'x-component': 'MultipleKeywordsInput', - }, - }); - this.app.addFieldInterfaceOperator('input', { - label: '{{t("不等于任意一个")}}', - value: '$notIn', - schema: { - 'x-component': 'MultipleKeywordsInput', - }, - }); - - this.app.addComponents({ - MultipleKeywordsInput, - }); - } -} - -export default PluginFilterOperatorMultipleKeywordsClient; diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/client/locale.ts b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/client/locale.ts deleted file mode 100644 index 84797b7d1b..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/client/locale.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * This file is part of the NocoBase (R) project. - * Copyright (c) 2020-2024 NocoBase Co., Ltd. - * Authors: NocoBase Team. - * - * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. - * For more information, please refer to: https://www.nocobase.com/agreement. - */ - -// @ts-ignore -import pkg from './../../package.json'; -import { useApp } from '@nocobase/client'; - -export function useT() { - const app = useApp(); - return (str: string) => app.i18n.t(str, { ns: [pkg.name, 'client'] }); -} - -export function tStr(key: string) { - return `{{t(${JSON.stringify(key)}, { ns: ['${pkg.name}', 'client'], nsMode: 'fallback' })}}`; -} diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/index.ts b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/index.ts deleted file mode 100644 index be99a2ff1a..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * This file is part of the NocoBase (R) project. - * Copyright (c) 2020-2024 NocoBase Co., Ltd. - * Authors: NocoBase Team. - * - * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. - * For more information, please refer to: https://www.nocobase.com/agreement. - */ - -export * from './server'; -export { default } from './server'; diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/locale/en-US.json b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/locale/en-US.json deleted file mode 100644 index bc0918509f..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/locale/en-US.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "tips": "选择单列的效果:将导入该列的所有非空值作为关键词\n选择多列的效果:将合并多个列的非空值作为关键词,重复值将被去除" -} diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/locale/nl-NL.json b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/locale/nl-NL.json deleted file mode 100644 index 9e26dfeeb6..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/locale/nl-NL.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/locale/zh-CN.json b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/locale/zh-CN.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/locale/zh-CN.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/server/collections/.gitkeep b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/server/collections/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/server/index.ts b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/server/index.ts deleted file mode 100644 index be989de7c3..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/server/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * This file is part of the NocoBase (R) project. - * Copyright (c) 2020-2024 NocoBase Co., Ltd. - * Authors: NocoBase Team. - * - * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. - * For more information, please refer to: https://www.nocobase.com/agreement. - */ - -export { default } from './plugin'; diff --git a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/server/plugin.ts b/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/server/plugin.ts deleted file mode 100644 index 790dded422..0000000000 --- a/packages/plugins/@nocobase/plugin-filter-operator-multiple-keywords/src/server/plugin.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * This file is part of the NocoBase (R) project. - * Copyright (c) 2020-2024 NocoBase Co., Ltd. - * Authors: NocoBase Team. - * - * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. - * For more information, please refer to: https://www.nocobase.com/agreement. - */ - -import { Plugin } from '@nocobase/server'; - -export class PluginFilterOperatorMultipleKeywordsServer extends Plugin { - async afterAdd() {} - - async beforeLoad() {} - - async load() {} - - async install() {} - - async afterEnable() {} - - async afterDisable() {} - - async remove() {} -} - -export default PluginFilterOperatorMultipleKeywordsServer;