• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Решено Объединить данные view

  • Автор темы JohnLemon
  • Дата начала
J

JohnLemon

JavaScript:
var entry = v.getEntryByKey("ОМС")
var nav = v.createViewNavFrom(entry)
Это не катит, мне нужно будет отбор делать по нескольким колонкам
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
37
А как убрать строки пустые ???? Или сделать что бы они не создавались ?
Чот, обсуждаются какие-то частности кода. И нет общего понимания техники.
Давай сначала.
Работа с любым репитером разбивается, как бы, на два этапа:
1 получение данных откуда хошь и формирование из них массива, который является DataSource для репитера.
Репитер покажет любой массив, который ему предложат. Если это данные из View, то результат - аналог классического View нотуса, с одним исключением: view в классическом клиенте может динамически обновиться если изменились данные, а в репитере нет. Он работает со статическим массивом полученным до рефреша репитера.
Соответственно, берёшь и получаешь данные из view любым удобным тебе способом (например через навигатор) одновременно фильтруя их, как тебе надо (не нужное в массив не кладёшь). Это и будет источник данных репитера.
2 показ полученных данных, с нужными тебе критериями видимости, иконками, доп инфой и т.п.
Если использовать репитер View - там уже предопределён дизайн показа для классического view (соотв. кастомайзинг ограничен)
Если использовать репитер Repeat or DataTable - простор для творчества широкий. Делай что хочешь.
-----------------------
Потом, стоит ли, пока не врубился в сабж до конца, изобретать велосипед? Много уже сделано до нас.
Вот тут как раз детально разбираются способы показа вьюшек с помошью ExtIibrary. Тут и тоталы, и категории, и фильтры, и иконки ... Всё детально описано.
Да и весь сайт полезен, там куча вариантов показа табличной инфы. Посмотри, поизучай - всё равно от этого никуда не денешься.
 
J

JohnLemon

или может есть другой поиск, по нескольким полям одновременно, что бы сохранилась структура вьюшка с категориями
 

rinsk

Lotus Team
12.11.2009
1 151
125
BIT
4
Эквивалента SearchOrder=4, как в стандартном view search query в XPages не реализовано. но это легко обходиться как минимум 3-мя способами при помощи любого JS Grid - пример на Dojo:

1 - сформировать свой JSON через навигатор и скормить его гриду (+ ftsearchSorted)
2 - использовать стандартный view search query и так же скормить гриду
3 - использовать ситаксис поиска Domino Data Service и так же - в грид
 
Последнее редактирование модератором:

alexas1

Green Team
10.04.2014
1 202
225
BIT
37
Примерно понял технику,
Теперь живой пример фильтрации: - классический репитер View
Дальше открываешь базу\меню вверху - Views. Дальше меню слева - By Column Vectors.
Смотришь как работает.
Твоя хепага в дизайнере - viewFilteringVector. Фильтр по нескольким колонкам.
Проверяется полное совпадение - ты же сделаешь как тебе нужно.
Там, правда, view без категорий - ты возьмёшь с категорией.
В хепаге viewFilteringCategory - фильтр по категории.
Можешь совмещать.
Если делать влоб, будет нюанс - пустую категорию тоже покажет.
 
J

JohnLemon

Вся проблема в том что мне еще нужна сортировка в диапазоне дат :nailbiting:
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
37
Вся проблема в том что мне еще нужна сортировка в диапазоне дат :nailbiting:
Хорошие запросы :) Касательно того, что rinsk написал про DojoGrid: тоталы там написаны через "одно место" - ну совсем не comm il faut.
По сути, тебе нужен SPOFU. Но с ним в хепагах облом. Можно использовать обычные папки, куда складывать результаты поиска. Только на каждого юзера нужна своя папка, чтоб не мешали друг другу. Дизайн папки тебе обеспечит и категории, и тоталы и нужную сортировку.
Примерные действия: в xpage, когда будет понятно имя юзера, агентом LS создаёшь папку с ViewName = имя юзера (EnableFolder( foldername$ ) ), там же накатываешь на него нужный дизайн Evaluate(@UpdateViewDesign(targetView, sourceView)), sourceView - заранее заготовленный вид-шаблон (с такой селекшн формулой, чтоб не один док в неё не попал - ненужные индексы нам не нужны), с нужным тебе дизайном. Заранее разрули ACL - нужны права дизайнера, от имени кого будешь запускать агента.
Дальше, твой отбор доков по нужным критериям. Кладёшь их в эту папку и показываешь в репитере (уже всё будет подготовлено, как надо), ты это умеешь. Только кладёшь не по-одному (notesDocument.PutInFolder ), а складываешь доки в коллекцию и дальше notesDocumentCollection .PutAllInFolder. А то ждать запаришься, если доков много.
Минусы: на каждого юзверя - свой SearchFolder, ну и секурити;).
А можно и заранее подготовить эти папки, все пользователи ведь известны (тогда с секурити всё ОК и задержки на создание не будет).
Будет работать стопудов нормально. Потом чонить придумаешь другое.
 
  • Нравится
Реакции: JohnLemon
J

JohnLemon

Будет работать стопудов нормально. Потом чонить придумаешь другое.
Блин я с папками вообще еще не работал, для меня сложновато это. А подскажите я могу получить вообще какую нибудь коллекцию документов или ентресов после поиска отсортированную как во вьюшке, или могу сделать FTSearchSorted по 2 колонкам ?
 
J

JohnLemon

и как вообще в репите отобрать данные с папок ??
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
37
получаешь коллекцию всех доков в папке ...
Dim sess As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim vc As NotesViewEntryCollection

Set db = sess.CurrentDatabase
Set view = db.GetView("MyFolder")
Set vc = view.AllEntries
Call vc.RemoveAllFromFolder("MyFolder")
в репите отобрать данные с папок
так же, как и с view.

Вот примеры построения произвольных вьюшек базовыми контролами.
Можешь наколобасить вьюшку любыми данными (в примере - из view) с произвольной структурой view на xpage.
Можешь объединять в ней данные из разных видов и разных баз, связывая их по любому ключу, который есть в доках (просто текст, UNID или NoteID).
В примере отбор данных по энтрисам из колонок за один проход, такшта работать будет шустро. Данные для вложенного репитера биндятся динамически, в процессе построения дерева.
Хочешь - можешь джейсоном тянуть.
В примере, как фильтровать (на примере названия категории) и как получать тоталы для отфильтрованного (без totals in notesView). Фильтровать с помощью indexOf или RegExp.

Ничего не оптимизировал. Примеры - не инструкция "как надо", эт просто концепт.
Если хочешь что то делать с этими доками, а не только посмотреть на табличку, можешь сохранить, до кучи, noteID в скрытую колонку, и им пользоваться в дальнейшем.
 

Вложения

  • ViewTable.zip
    49,1 КБ · Просмотры: 168
  • Нравится
Реакции: Мыш
J

JohnLemon

Спасибо, вообще круто получилось!!! Сделал все на js осталось только понять как программно создать папку на js и прикрепить к ней дизайн завтра буду эксперементировать.
 
S

Sanchezz86

Чтобы не плодить темы, задам вопрос сдесь...

Подскажите, а как в xp:dataview отобразить столбец с итоговым значение в процентах.?
В обычной вьюшке просто указывается свойство "показывать итоговое значение", а в xpages такого не могу найти!
как же сделать так как на рисунке?
1.PNG
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
37
xp:dataview отобразить столбец с итоговым значение в процентах
В этом репитере - никак. Надо самому строить вьюшку в других репитерах.
Вот вариант с объяснялками: на базе уже полученных тоталов в стандартном View (идея - взять колонку с тоталами по индексу).
А ваще, можно изгаляться как угодно...
 
S

Sanchezz86

Спасибо. Но я так и беру колонку с итоговыми значениями, но сумму он мне не показывает просто значения без тотала.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!