View - Расширенные возможности

Автор Тема: View - Расширенные возможности  (Прочитано 16213 раз)

CL1F

  • Участник
  • **
  • Сообщений: 47
  • GODMODE
    • Просмотр профиля
View - Расширенные возможности
« : 24 Май 2012, 11:49:21 »
Интересуют 2 момента  ...

1) Можно ли построить сложную шапку для таблицы ... пример во вложении ... (3х уровневая шапка с объединением ячеек)

2) Как известно для каждой вьюшки можно создать шаблон ($$ViewTemplate for DocumentByGetTrashUnitAgent ), что бы несколько вьюшек отображались через 1 шабон надо имена поместить в поле Title ... или просто в названии прописать через ( | ), например
$$ViewTemplate for DocumentByGiveTrashUnit | $$ViewTemplate for DocumentByGetTrashUnit | $$ViewTemplate for DocumentByGiveTrashUnitAgent | $$ViewTemplate for DocumentByGetTrashUnitAgent  ... ссылка на ман https://www.ibm.com/developerworks/ru/edu/lotwebapp/section3.html ... но почему то шаблон применяется для первой и для последней вьюшки, в чем беда ?
Пишу на Лотусе ... Выжигателем ...

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
View - Расширенные возможности
« Ответ #1 : 24 Май 2012, 12:16:38 »
Добрый день!

1. С помощью вида нельзя. Можно попробовать самому рисовать таблицу на форме.

2. Есть ограничение на длину имени формы. Скорее всего из-за этого такой эффект.
Если шаблон единый, то используйте $$ViewTemplateDefault.
« Последнее редактирование: 24 Май 2012, 13:32:19 от ViV »

CL1F

  • Участник
  • **
  • Сообщений: 47
  • GODMODE
    • Просмотр профиля
View - Расширенные возможности
« Ответ #2 : 24 Май 2012, 13:16:37 »
1) сейчас реализовано с помощью JQ ... как документ загружен ... вырезаем 1-ую TR ... и записываем то что нам надо ...

2) вьюх очень много ... и шаблон по умолчанию используется ... ... попробую урезать имя хотя сейчас размер Data Length: 186 bytes, как бы не в размере дело
Пишу на Лотусе ... Выжигателем ...

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
View - Расширенные возможности
« Ответ #3 : 24 Май 2012, 13:22:07 »
Обычно пара-тройка имен $$ViewTemplate for ... влезает в имя, дальше уже не идет.
« Последнее редактирование: 24 Май 2012, 13:31:58 от ViV »

CL1F

  • Участник
  • **
  • Сообщений: 47
  • GODMODE
    • Просмотр профиля
View - Расширенные возможности
« Ответ #4 : 25 Май 2012, 07:07:31 »
Добрый день!

1. С помощью вида нельзя. Можно попробовать самому рисовать таблицу на форме.

велика вероятность что таблица поползет ... даже с учетом CSS  ...
Пишу на Лотусе ... Выжигателем ...

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
View - Расширенные возможности
« Ответ #5 : 25 Май 2012, 11:23:55 »
Если сам формируешь HTML, то такого не будет.

CL1F

  • Участник
  • **
  • Сообщений: 47
  • GODMODE
    • Просмотр профиля
View - Расширенные возможности
« Ответ #6 : 25 Май 2012, 12:48:28 »
не понял ....

для вьюшки создаем шаблон  ... шапку описываем в шаблоне ...
вьюшку садим ... если так то ползет обязательно

расскажи о своем варианте
Пишу на Лотусе ... Выжигателем ...

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
View - Расширенные возможности
« Ответ #7 : 25 Май 2012, 12:59:47 »
Можно, к примеру, агентом весь вид формировать.
Т.е. на форме, на WebQueryOpen работает агент, который формирует шапку,  бегает по нужному виду, собирает данные, обертывает их в теги, полученный код пишет в ричтекстовое поле на форме. При загрузке форма отображает сформированный HTML из поля.

CL1F

  • Участник
  • **
  • Сообщений: 47
  • GODMODE
    • Просмотр профиля
View - Расширенные возможности
« Ответ #8 : 28 Май 2012, 07:37:38 »
интересная мысль ... попробую реализовать ... но у нас сегодня закрытие периода ... так что не сразу выложу результат  ...
Пишу на Лотусе ... Выжигателем ...

CL1F

  • Участник
  • **
  • Сообщений: 47
  • GODMODE
    • Просмотр профиля
View - Расширенные возможности
« Ответ #9 : 04 Июнь 2012, 08:57:46 »
выдалась минутка ... наливаю кофе и пишу о своем решении )

Общий концепт.
1) Создана вьюшка с нужными полями (колонками)
2) Создаем агент по обработке вьюшки
3) Передаем параметры POSTом, что б не засорять адресную строку

Сам агент расписан по функциям в теле(Initialize) проверка на значение переменной iAction и в зависимости от значений запускаем ряд функций
If iAction = "1" And UNID <> "" Then
' Удаление документа
Doc_Del(iPOST)
iAction = "100"
End If
If iAction = "2" And UNID <> "" Then
' Редактирование документа
Doc_Edit(iPOST)
iAction = "100"
End If
If iAction = "3" Then
' Создание документа
Doc_Add(iPOST)
iAction = "100"
End If

' /////////////////////////////////////////////////////////////////////////////////////////////////////
If iAction = "100" Then
' Построение таблиц
html=""
html=html + build_doc_css ()
html=html + build_doc (iPOST)
html=html + build_doc_bott ()
End If
ну что то пит того

За построение шапок отвечает ряд функций которые запускаются в зависимости от значений ViewName в функции build_doc (iPOST), например:
Function build_table_O () As String
' (Отправлено) Передано отходов подразделению

table= { 
<table  width="100px" cellspacing="0" cellpadding="0" class="TabFont FCenter" border="1" bordercolor="#000000" style="border-collapse:collapse" >
  <tr class="FTop">
    <td rowspan="3">№ <br /> п/п</td>
    <td rowspan="3">Наименование отхода</td>
    <td rowspan="3">Код отхода по ФККО</td>
    <td rowspan="3">Кол- во</td>
    <td rowspan="3">Структурное подразделение, которому передан /  принят отход</td>
    <td colspan="5">Цель передачи</td>
  </tr>
  <tr class="FTop">
    <td colspan="2">Размещение</td>
    <td rowspan="2">Использова- ние в т.ч. переработка)</td>
    <td rowspan="2">Обезврежива- ние</td>
    <td rowspan="2">Временное складирова- ние в подразделе- нии (накопление)</td>
  </tr>
  <tr class="FTop">
    <td>Хранение (на шлаковом отвале)</td>
    <td>Захоронение (на площадке мусоров)</td>
  </tr>
  <tr>
    <td><img src="blank.gif" width="30" height="1"><br>1</td>
    <td><img src="blank.gif" width="360" height="1"><br>2</td>
    <td><img src="blank.gif" width="110" height="1"><br>3</td>
    <td><img src="blank.gif" width="90" height="1"><br>4</td>
    <td><img src="blank.gif" width="90" height="1"><br>5</td>
    <td><img src="blank.gif" width="90" height="1"><br>6</td>
    <td><img src="blank.gif" width="90" height="1"><br>7</td>
    <td><img src="blank.gif" width="90" height="1"><br>8</td>
    <td><img src="blank.gif" width="90" height="1"><br>9</td>
    <td><img src="blank.gif" width="90" height="1"><br>10</td>
  </tr>}

build_table_O = table
End Function
3х ярусная шапка, ширина колонок сделана картинками ))) так как КСС все ровно пляшет в разных браузерах (из-за ширины таблиц, то больше экрана то меньше, косячел в основном Хром, как не странно)

Проблемные места :

1) При сохранении документа из агента .... требовалось приводить числа к нормальному виду, для этого написалась (сама как то) функция по замене символа в строке для последующего преобразования в val()
Function StrReplace( Byval src As String,  Byval dest As String, arg As String) As String

pos = Instr(arg, src)

    ' Создаем цыкл, пока не заменим все элементы
While (pos > 0)
arg = Left(arg, pos - 1) + dest + Mid(arg, pos + Len(src))
pos = Instr(pos + Len(dest), arg, src)
Wend

    ' Возвращаем строку
strreplace = arg

End Function

2) Требовалось перекодировать пост запрос(.Request_Content(0)) ... так как аналога(.Query_String_Decoded(0)) я не нашел
' Декодирование строки из %CF%E5 в Пе
Function UrlDecode(s As String) As String

If Len(s) = 0 Then Exit Function
Dim i As Integer
Dim tmp As String
Dim c As String
For i = 1 To Len(s)
c = Mid$(s, i, 1)
If c = "+" Then c = " "
If c = "%" Then
c = Chr$("&H" + Mid$(s, i + 1, 2))
i = i + 2
End If
tmp = tmp + c
Next i
UrlDecode = tmp
End Function

3) и классическое решение с нулями в числах ... то есть если принтить 0,2 то обязательно отобразится ,2 ... ну не айс
Function Num_to_Str ( Byval number As String) As String
On Error Goto opss

Number_Fix =  Fix(number)
Number_Fraction =  Round(Fraction(number), 3)

If Number_Fix = 0  Then
If Number_Fraction > 0 Then
number = "0" & Number_Fraction
Else
number = "0"
End If
Else
If Number_Fraction > 0 Then
number = "" & Number_Fix & Number_Fraction
Else
number = "" & Number_Fix
End If
End If

Num_to_Str = number
Exit Function
opss:
ErrorMsg = ErrorMsg & Item & " " & "Error# " & Err & | - | & Lsi_info(2) & " - Line: " & Cstr(Erl) & " - " & Error$ & " "
Print ErrorMsg  & "<br>"
End Function

Пишу на Лотусе ... Выжигателем ...

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
View - Расширенные возможности
« Ответ #10 : 04 Июнь 2012, 12:10:31 »
Симпатично получилось)

По проблемным местам:
Для перекодировки POST-запроса можно в скрытом поле на форме использовать CGI-переменную Request_Content
 и @URLDecode. Затем в агенте использовать это поле.

Для форматирования чисел можно использовать встроенную функцию Format(). Например, Format$(dblvar, "0.0##")

CL1F

  • Участник
  • **
  • Сообщений: 47
  • GODMODE
    • Просмотр профиля
View - Расширенные возможности
« Ответ #11 : 09 Июнь 2012, 09:20:56 »
Намотал бы на ус ) но за неимением таковых пока повешаю на уши )

Format$(dblvar, "0.0##")
нормально отработает с числами ? проверять не охота ... поверю на слово %)
 1000
 10,01
 0,1
 ,1
Пишу на Лотусе ... Выжигателем ...

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
View - Расширенные возможности
« Ответ #12 : 09 Июнь 2012, 14:09:22 »
Отработает нормально:) Куда она денется
А на слово лучше не верить, а проверить ;)