Semanti c UI - параметры поиска пусты - PullRequest
0 голосов
/ 01 апреля 2020

Итак, я пытаюсь понять, как работает модуль поиска Semanti c UI. Я тестировал его на некоторых тестовых данных:

const testdata = [
    {
    "id": 7,
    "created_at": "2020-03-24 08:40:42",
    "updated_at": "2020-03-25 10:10:59",
    "name": "NameX",
    "email": "namex@email.no",
    "phone": "94860509"
    },
    {
    "id": 8,
    "created_at": "2020-03-25 10:11:10",
    "updated_at": "2020-03-25 10:11:10",
    "name": "NameY",
    "email": "namey@gmail.com",
    "phone": "94860509"
    },
    {
    "id": 9,
    "created_at": "2020-03-31 15:55:06",
    "updated_at": "2020-03-31 15:55:19",
    "name": "Lucifer",
    "email": "lucifer@gmail.com",
    "phone": "58893177"
    },
    {
    "id": 10,
    "created_at": "2020-03-31 15:55:41",
    "updated_at": "2020-03-31 15:55:41",
    "name": "Morningstar",
    "email": "morningstar@gmail.com",
    "phone": "12345678"
    },
    {
    "id": 11,
    "created_at": "2020-04-01 16:13:39",
    "updated_at": "2020-04-01 16:13:39",
    "name": "Superwhale",
    "email": "superwhale@gmail.com",
    "phone": "18181818"
    }
];

В настоящее время кажется, что он действительно выполняет поиск. Есть два имени со словом «имя» в них - NameX и NameY, и это дает мне два результата, проблема в том, что эти результаты просто пустые. [https://i.imgur.com/O6CcAdc.png] [1]

Вот как настроен элемент поиска:

$('.ui.search').search({
    source: testdata,
    showNoResults: true,
    ignoreDiacritics: true,
    searchFullText: false,
    searchFields: [
        'name'
    ]
});

Я просматривал документацию и похоже это должно работать, но это не так. Я что-то упускаю из виду?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

Я понял, в чем проблема. Модуль поиска пользовательского интерфейса Semanti c ожидает определенные ключи, поэтому мое эквивалентное «имя» должно быть «заголовком». Я исправил это, пройдя через JSON и заменив каждое вхождение

"name":

на

"title" :

Я пытался использовать

fields: {
  title   : 'name'
}

, но по какой-то причине это не сработало.

0 голосов
/ 01 апреля 2020

Попробуйте отфильтровать результат по функции

const filterNameObj = (array) => array.filter(item => {
  if((item.name === 'NameX') || (item.name === 'NameY')) return item
})

filterNameObj(testdata )

const testdata = [
  {
  "id": 7,
  "created_at": "2020-03-24 08:40:42",
  "updated_at": "2020-03-25 10:10:59",
  "name": "NameX",
  "email": "namex@email.no",
  "phone": "94860509"
  },
  {
  "id": 8,
  "created_at": "2020-03-25 10:11:10",
  "updated_at": "2020-03-25 10:11:10",
  "name": "NameY",
  "email": "namey@gmail.com",
  "phone": "94860509"
  },
  {
  "id": 9,
  "created_at": "2020-03-31 15:55:06",
  "updated_at": "2020-03-31 15:55:19",
  "name": "Lucifer",
  "email": "lucifer@gmail.com",
  "phone": "58893177"
  },
  {
  "id": 10,
  "created_at": "2020-03-31 15:55:41",
  "updated_at": "2020-03-31 15:55:41",
  "name": "Morningstar",
  "email": "morningstar@gmail.com",
  "phone": "12345678"
  },
  {
  "id": 11,
  "created_at": "2020-04-01 16:13:39",
  "updated_at": "2020-04-01 16:13:39",
  "name": "Superwhale",
  "email": "superwhale@gmail.com",
  "phone": "18181818"
  }
];

const filterNameObj = (array) => array.filter(item => {
  if((item.name === 'NameX') || (item.name === 'NameY')) return item
})

console.log(filterNameObj(testdata))
...