Skip to content

Commit

Permalink
feat(grid): support highlight the cell which match the keywords
Browse files Browse the repository at this point in the history
  • Loading branch information
minlovehua committed Dec 24, 2024
1 parent b317ca0 commit d052f39
Show file tree
Hide file tree
Showing 7 changed files with 238 additions and 15 deletions.
2 changes: 1 addition & 1 deletion packages/grid/src/utils/field/link.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Field } from './field';
import { isEmpty } from '../common';

export class LinkField extends Field {
override cellFullText(transformValue: LinkFieldValue, field: AITableField): string[] {
cellFullText(transformValue: LinkFieldValue, field: AITableField): string[] {
let fullText: string[] = [];
if (!isEmpty(transformValue?.text)) {
fullText.push(transformValue.text);
Expand Down
2 changes: 1 addition & 1 deletion packages/grid/src/utils/field/member.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { AITableField, AITableReferences } from '../../index';
import { Field } from './field';

export class MemberField extends Field {
override cellFullText(transformValue: string[], field: AITableField, references?: AITableReferences): string[] {
cellFullText(transformValue: string[], field: AITableField, references?: AITableReferences): string[] {
let fullText: string[] = [];
if (transformValue?.length && references) {
for (let index = 0; index < transformValue.length; index++) {
Expand Down
2 changes: 1 addition & 1 deletion packages/grid/src/utils/field/progress.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { AITableField } from '../../index';
import { Field } from './field';

export class ProgressField extends Field {
override cellFullText(transformValue: number, field: AITableField): string[] {
cellFullText(transformValue: number, field: AITableField): string[] {
const fullText = `${transformValue}%`;
return [fullText];
}
Expand Down
2 changes: 1 addition & 1 deletion packages/grid/src/utils/field/select.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Field } from './field';
import { AITableField, AITableSelectField } from '../../index';

export class SelectField extends Field {
override cellFullText(transformValue: string[], field: AITableField): string[] {
cellFullText(transformValue: string[], field: AITableField): string[] {
let cellText: string[] = [];
if (transformValue && Array.isArray(transformValue) && transformValue.length) {
transformValue.forEach((optionId) => {
Expand Down
2 changes: 1 addition & 1 deletion packages/grid/src/utils/field/text.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { AITableField, AITableReferences, isEmpty } from '../../index';
import { Field } from './field';

export class TextField extends Field {
override cellFullText(transformValue: any, field: AITableField, references?: AITableReferences): string[] {
cellFullText(transformValue: any, field: AITableField, references?: AITableReferences): string[] {
let fullText: string[] = [];
if (!isEmpty(transformValue)) {
fullText.push(String(transformValue));
Expand Down
67 changes: 63 additions & 4 deletions src/app/service/table.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,19 +45,74 @@ export class TableService {
router = inject(Router);

activeView = computed(() => {
return this.views().find((view) => view._id === this.activeViewId()) as AITableView;
const settings = {
condition_logical: 'and',
conditions: [
// 评分
// {
// field_id: 'column-7',
// operation: 'nin', //in 、nin 、exists、empty
// value: [3, '4']
// }
// 链接
// {
// field_id: 'column-8',
// operation: 'contain', // 'exists', //'empty',
// value: '百'
// }
// 更新时间(系统日期)
// {
// field_id: 'column-12',
// operation: 'exists', // empty 、 exists
// value: null
// }
// {
// field_id: 'column-12',
// operation: 'between',
// value: [1734513044, 1734685844] // 2024-12-18 ~2024-12-20
// }
// {
// field_id: 'column-12',
// operation: 'gt', // eq、gt、lt
// // value: 1734376927 // 2024/12/17
// value: 1734463327 // 2024/12/18
// // value: 1734549727 // 2024/12/19
// }
// 自定义日期
// {
// field_id: 'column-4',
// operation: 'lt',
// value: 1734636127 // 2024/12/20
// }
// {
// field_id: 'column-4',
// operation: 'empty',
// value: null
// }
// {
// field_id: 'column-4',
// operation: 'between',
// value: [1733944927, 1734722527] // 2024-12-12 ~2024-12-21
// }
],
is_keep_sort: true,
sorts: [{ direction: -1, sort_by: 'column-3' }],
keywords: '3'
};
const view = this.views().find((view) => view._id === this.activeViewId()) as AITableView;
return { ...view, settings };
});

activeViewShortId = computed(() => {
return this.activeView().short_id;
});

renderRecords = computed(() => {
return buildRecordsByView(this.aiTable, this.records(), this.fields(), this.activeView()) as AITableViewRecords;
return buildRecordsByView(this.aiTable, this.records(), this.fields(), this.activeView() as AITableView) as AITableViewRecords;
});

renderFields = computed(() => {
return buildFieldsByView(this.aiTable, this.fields(), this.activeView()) as AITableViewFields;
return buildFieldsByView(this.aiTable, this.fields(), this.activeView() as AITableView) as AITableViewFields;
});

aiBuildRenderDataFn: Signal<() => AITableValue> = computed(() => {
Expand All @@ -69,6 +124,10 @@ export class TableService {
};
});

keywords = computed(() => {
return this.activeView().settings?.keywords;
});

initData(views: AITableView[]) {
this.views = signal(views);
}
Expand Down Expand Up @@ -120,7 +179,7 @@ export class TableService {
}
this.provider = getProvider(this.sharedType.doc!, room, isDevMode());
this.provider.connect();
this.provider.once('synced', () => {
this.provider.once('sync', () => {
if (this.provider!.synced && [...this.sharedType!.doc!.store.clients.keys()].length === 0) {
console.log('init shared type');
const value = getCanvasDefaultValue();
Expand Down
176 changes: 170 additions & 6 deletions src/app/utils/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ export function getDefaultValue() {
'column-20': ['66b31d0c8097a908f74bcd8a'],
'column-21': ['66b31d0c8097a908f74bcd8a'],
'column-22': ['66b31d0c8097a908f74bcd8a'],
'column-3': 0,
'column-4': { timestamp: 1734636127 },
'column-3': null,
'column-4': { timestamp: 1682235946 },
'column-5': ['member_01'],
'column-6': 10,
'column-7': 3,
Expand Down Expand Up @@ -73,7 +73,7 @@ export function getDefaultValue() {
'column-20': ['66b31d0c8097a908f74bcd8a', '66b31d0c8097a908f74bcd8b'],
'column-21': ['66b31d0c8097a908f74bcd8a', '66b31d0c8097a908f74bcd8b'],
'column-22': ['66b31d0c8097a908f74bcd8a', '66b31d0c8097a908f74bcd8b'],
'column-3': 10,
'column-3': 0,
'column-4': { timestamp: 1682235946 },
'column-5': ['member_01', 'member_02'],
'column-6': 50,
Expand Down Expand Up @@ -125,6 +125,88 @@ export function getDefaultValue() {
// 'column-11': ['member_02'],
// 'column-12': 1720490727
}
},
{
_id: 'row-4',
short_id: `row-short-id-${4}`,
...getDefaultTrackableEntity(),
positions: {
view1: 2,
view2: 0
},
values: {
'column-1': '文本 4-1',
'column-2': ['_id_4'],
'column-20': [
'66b31d0c8097a908f74bcd8a',
'66b31d0c8097a908f74bcd8b',
'66b31d0c8097a908f74bcd8c',
'66b31d0c8097a908f74bcd8d'
],
'column-21': [
'66b31d0c8097a908f74bcd8a',
'66b31d0c8097a908f74bcd8b',
'66b31d0c8097a908f74bcd8c',
'66b31d0c8097a908f74bcd8d'
],
'column-22': [
'66b31d0c8097a908f74bcd8a',
'66b31d0c8097a908f74bcd8b',
'66b31d0c8097a908f74bcd8c',
'66b31d0c8097a908f74bcd8d'
],
'column-3': null,
'column-4': { timestamp: 1682235946 },
'column-5': [],
'column-6': 100,
'column-7': 1,
'column-8': {},
'column-9': [],
'column-10': 1682235946,
'column-11': ['member_02'],
'column-12': 1720490727
}
},
{
_id: 'row-5',
short_id: `row-short-id-${5}`,
...getDefaultTrackableEntity(),
positions: {
view1: 2,
view2: 0
},
values: {
'column-1': '文本 5-1',
'column-2': ['_id_5'],
'column-20': [
'66b31d0c8097a908f74bcd8a',
'66b31d0c8097a908f74bcd8b',
'66b31d0c8097a908f74bcd8c',
'66b31d0c8097a908f74bcd8d'
],
'column-21': [
'66b31d0c8097a908f74bcd8a',
'66b31d0c8097a908f74bcd8b',
'66b31d0c8097a908f74bcd8c',
'66b31d0c8097a908f74bcd8d'
],
'column-22': [
'66b31d0c8097a908f74bcd8a',
'66b31d0c8097a908f74bcd8b',
'66b31d0c8097a908f74bcd8c',
'66b31d0c8097a908f74bcd8d'
],
'column-3': 1,
'column-4': { timestamp: 1682235946 },
'column-5': [],
'column-6': 100,
'column-7': 1,
'column-8': {},
'column-9': [],
'column-10': 1682235946,
'column-11': ['member_02'],
'column-12': 1720490727
}
}
],
fields: [
Expand Down Expand Up @@ -443,8 +525,8 @@ export function getCanvasDefaultValue() {
'column-111': ['piece_1'],
'column-112': ['tag_1'],
'column-20': ['66b31d0c8097a908f74bcd8a'],
'column-3': 0,
'column-4': { timestamp: 1734636127 },
'column-3': null,
'column-4': { timestamp: 1682235946 },
'column-5': ['member_01'],
'column-6': 10,
'column-7': 5,
Expand Down Expand Up @@ -477,7 +559,7 @@ export function getCanvasDefaultValue() {
'column-111': ['piece_2'],
'column-112': ['tag_2'],
'column-20': ['66b31d0c8097a908f74bcd8a', '66b31d0c8097a908f74bcd8b'],
'column-3': 10,
'column-3': 0,
'column-4': { timestamp: 1682235946 },
'column-5': ['member_01', 'member_02', 'member_03', 'member_04', 'member_05', 'member_06', 'member_07', 'member_08'],
'column-6': 50,
Expand Down Expand Up @@ -527,6 +609,88 @@ export function getCanvasDefaultValue() {
'column-22': ['66b31d0c8097a908f74bcd8b', '66b31d0c8097a908f74bcd8a'],
'column-23': ['66b31d0c8097a908f74bcd8e', '66b31d0c8097a908f74bcd8a', '66b31d0c8097a908f74bcd8b']
}
},
{
_id: 'row-4',
short_id: `row-short-id-${4}`,
...getDefaultTrackableEntity(),
positions: {
view1: 2,
view2: 0
},
values: {
'column-1': '文本 4-1',
'column-2': ['_id_4'],
'column-20': [
'66b31d0c8097a908f74bcd8a',
'66b31d0c8097a908f74bcd8b',
'66b31d0c8097a908f74bcd8c',
'66b31d0c8097a908f74bcd8d'
],
'column-21': [
'66b31d0c8097a908f74bcd8a',
'66b31d0c8097a908f74bcd8b',
'66b31d0c8097a908f74bcd8c',
'66b31d0c8097a908f74bcd8d'
],
'column-22': [
'66b31d0c8097a908f74bcd8a',
'66b31d0c8097a908f74bcd8b',
'66b31d0c8097a908f74bcd8c',
'66b31d0c8097a908f74bcd8d'
],
'column-3': null,
'column-4': { timestamp: 1682235946 },
'column-5': [],
'column-6': 100,
'column-7': 1,
'column-8': {},
'column-9': [],
'column-10': 1682235946,
'column-11': ['member_02'],
'column-12': 1720490727
}
},
{
_id: 'row-5',
short_id: `row-short-id-${5}`,
...getDefaultTrackableEntity(),
positions: {
view1: 2,
view2: 0
},
values: {
'column-1': '文本 5-1',
'column-2': ['_id_5'],
'column-20': [
'66b31d0c8097a908f74bcd8a',
'66b31d0c8097a908f74bcd8b',
'66b31d0c8097a908f74bcd8c',
'66b31d0c8097a908f74bcd8d'
],
'column-21': [
'66b31d0c8097a908f74bcd8a',
'66b31d0c8097a908f74bcd8b',
'66b31d0c8097a908f74bcd8c',
'66b31d0c8097a908f74bcd8d'
],
'column-22': [
'66b31d0c8097a908f74bcd8a',
'66b31d0c8097a908f74bcd8b',
'66b31d0c8097a908f74bcd8c',
'66b31d0c8097a908f74bcd8d'
],
'column-3': 1,
'column-4': { timestamp: 1682235946 },
'column-5': [],
'column-6': 100,
'column-7': 1,
'column-8': {},
'column-9': [],
'column-10': 1682235946,
'column-11': ['member_02'],
'column-12': 1720490727
}
}
],
fields: [
Expand Down

0 comments on commit d052f39

Please sign in to comment.