powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Цвет ячейки в tablePane
25 сообщений из 28, страница 1 из 2
Цвет ячейки в tablePane
    #37143364
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Есть табличка, а в ней колонка с цветом:

Код: plaintext
1.
2.
3.
<tablePane
..>
<column header="Цвет" colName="colColor" colExpression="Color" />
</tablePane>

Нужно установить фон ячейки в соответствии с кодом цвета, отображаемым в ней :-)



Через condition и cellStyle у меня не получилось, там кажется цвет невозможно передать извне.
Остается только OnDrawCell для столбца. Тут не знаю какой взять тэг.
Получилось установить только фон для текста:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Method DrawMyCell(pTable As %ZEN.Component.tablePane, pName As %String, pSeed As %String) As %Status
{
              if  %query("colColor")'="" {
		set color = "background-color:"_%query("colColor")_";"
		&html< <span style="background-color:red;"> #(%query("colColor"))# </span>>	
	}  else  {
		&html< >
	}
	
	quit $$$OK
} 

А как всю ячейку залить?


-----------------------------------------------
А мы тут плюшками балуемся...

Аленочка тм
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37143421
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АленочкаА как всю ячейку залить?
Как вариант...

Код: plaintext
&html< <span style="display: block; width: 100%; height: 100%; background-color: red;"> #(%query("colColor"))# </span>>

Не проверял...
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37143517
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочка , а где ты прочитала про параметры метода OnDrawCell? Что вних передаётся?
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37143835
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочка ,

/// Created using the page template: Default
Class del.test2 Extends %ZEN.Component.page
{

/// Имя приложения, которому принадлежит эта страница.
Parameter APPLICATION;

/// Отображаемое имя для нового приложения.
Parameter PAGENAME;

/// Домен, используемый для локализации.
Parameter DOMAIN = "sqlru";

/// Этот блок Style содержит определение CSS-стиля страницы.
XData Style
{
<style type="text/css">
table.tpTable td {
  border-right: 1px solid gray;
  border-bottom: 1px solid gray;
  padding: 0px;
  overflow: hidden;
  /*text-overflow: ellipsis;*/
}
</style>
}

/// Этот XML блок описывает содержимое этой страницы.
XData Contents [ XMLNamespace = " http://www.intersystems.com/zen"  ]
{
<page xmlns=" http://www.intersystems.com/zen"  title="">
  <tablePane sql="select 'red' colColor union select 'blue' union select '#FF9122' union select '#00CA00'">
    <column colName="colColor" header="Цвет" OnDrawCell="DrawCell"/>
  </tablePane>
</page>
}

Method DrawCell(
  pTable As %ZEN.Component.tablePane,
  pName As %String,
  pSeed As %String) As %Status
{
  if %query("colColor")'="" {
    &html< <div style=#("background-color:"_%query("colColor")_";")#> #(%query("colColor"))# </div>>  
  }
  q $$$OK
}

}
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37143845
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Аленочка , а где ты прочитала про параметры метода OnDrawCell? Что вних передаётся? OnDrawCell
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37145448
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit , по твоей ссылке хоть немного побольше информации чем в нашем 2007...
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37158822
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaАленочкаА как всю ячейку залить?
Как вариант...

Код: plaintext
&html< <span style="display: block; width: 100%; height: 100%; background-color: red;"> #(%query("colColor"))# </span>>

Не проверял...

а я сейчас вот проверила в рамках другой своей задачи - работает как надо, ячейку полностью закрашивает =))! спасибо.
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37158826
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit Аленочка ,

/// Created using the page template: Default
Class del.test2 Extends %ZEN.Component.page
{

/// Имя приложения, которому принадлежит эта страница.
Parameter APPLICATION;

/// Отображаемое имя для нового приложения.
Parameter PAGENAME;

/// Домен, используемый для локализации.
Parameter DOMAIN = "sqlru";

/// Этот блок Style содержит определение CSS-стиля страницы.
XData Style
{
<style type="text/css">
table.tpTable td {
  border-right: 1px solid gray;
  border-bottom: 1px solid gray;
  padding: 0px;
  overflow: hidden;
  /*text-overflow: ellipsis;*/
}
</style>
}

/// Этот XML блок описывает содержимое этой страницы.
XData Contents [ XMLNamespace = " http://www.intersystems.com/zen"  ]
{
<page xmlns=" http://www.intersystems.com/zen"  title="">
  <tablePane sql="select 'red' colColor union select 'blue' union select '#FF9122' union select '#00CA00'">
    <column colName="colColor" header="Цвет" OnDrawCell="DrawCell"/>
  </tablePane>
</page>
}

Method DrawCell(
  pTable As %ZEN.Component.tablePane,
  pName As %String,
  pSeed As %String) As %Status
{
  if %query("colColor")'="" {
    &html< <div style=#("background-color:"_%query("colColor")_";")#> #(%query("colColor"))# </div>>  
  }
  q $$$OK
}

}

и этот пример работает, но ячейку не полностью закрашивает, остаются светлые полосы снизу и сверху
хотя для "эффекта присутствия" тоже неплохо выглядит
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37158837
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поторопилась (( оба примера одинаково незакрашенные отступы оставляют, если текст ячейки в одну строку
а вот если текст в ячейке с переносами, в 2 строки н-р, то ячейка закарашивается почти полностью
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37158904
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочка , спан не стоит использовать, т.к. это не блочный элемент, приходиться его делать таковым. Т.ч. лучше сразу див, как у servit .
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37158907
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочкаоба примера одинаково незакрашенные отступы оставляют
Тут нужно:
- показать нам скрин всей строки
- знать как "настроен" твой цсс на отступы и поля
- показать исходный хтмл-код

Потому как

Код: plaintext
&html< <div style=#("width: 100%; height: 100%; background-color:"_%query("colColor")_";")#> #(%query("colColor"))# </div>> 

Должен занять все пространство материнского элемента. Если визуально это не так - нужно смотреть какой там материнский элемент и работать уже с ним.
Поскольку в ЗЕНе целая матрёшка из элементов генерится.
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37160016
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочка ,
Вариант 1Class del.test2 Extends %ZEN.Component.page
{

/// Этот блок Style содержит определение CSS-стиля страницы.
XData Style
{
<style type="text/css">
  table.tpTable td,table.tpTable tr.tpSelected td {padding: 0px;}
  .tpStr {height:100%;}
  .tpSel {font-weight: normal;}
</style>
}

/// Этот XML блок описывает содержимое этой страницы.
XData Contents [ XMLNamespace = " http://www.intersystems.com/zen"  ]
{
<page xmlns=" http://www.intersystems.com/zen"  title="">
  <tablePane id="tp" sql="select 'red' colColor union select 'blue' union select '#FF9122' union select '#00CA00'" width="1px" nowrap="false">
    <column colName="colColor" header="Цвет" OnDrawCell="DrawCell"/>
  </tablePane>
</page>
}

Method DrawCell(pTable As %ZEN.Component.tablePane,  pName As %String,  pSeed As %String) As %Status
{
  write:%query("colColor")'="" "<div style=""height:100%;background-color:"_%query("colColor")_";"">"_%query("colColor")_" asd</div>"
  q $$$OK
}

}
Вариант 2Class del.test2 Extends %ZEN.Component.page
{

/// Этот XML блок описывает содержимое этой страницы.
XData Contents [ XMLNamespace = " http://www.intersystems.com/zen"  ]
{
<page xmlns=" http://www.intersystems.com/zen"  title="">
  <button id="bt" caption="Test" onclick="zenPage.test(zen('tp'));"/>
  <tablePane id="tp" sql="select 'red' colColor union select 'blue' union select '#FF9122' union select '#00CA00'" width="1px" nowrap="false">
    <column colName="colColor" header="Цвет"/>
  </tablePane>
</page>
}

ClientMethod test(tp) [ Language = javascript ]
{
  for (var row=0;row<tp.getProperty('rowCount');row++) {
    var td=tp.findChildByClass(tp.findElement('tr_' + row),'tpStr');
    td.style.backgroundColor=td.innerHTML;
    td.innerHTML=td.innerHTML+' asd';
  }
  zen('bt').setHidden(true);
}

}
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37160871
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочка ,

Вариант 3
/// Created using the page template: Default
Class del.test2 Extends %ZEN.Component.page
{

/// Этот XML блок описывает содержимое этой страницы.
XData Contents [ XMLNamespace = " http://www.intersystems.com/zen"  ]
{
<page xmlns=" http://www.intersystems.com/zen"  title="">
  <tablePane id="tp" sql="select 'red asd' colColor union select 'blue gg' union select '#FF9122 334' union select '#00CA00 g6e'" width="1px" nowrap="false">
    <column colName="colColor" header="Цвет"/>
    <condition
      colName="colColor"
      predicate="EQ"
      value="{colColor}"
      cellStyle="#(%page.%Eval(&quot;background-color:&quot;_$p(%query(&quot;colColor&quot;),&quot; &quot;,1)))#"
    />
</tablePane>
</page>
}

}
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37164861
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit
супер! на досуге все варианты попробую, все-таки и через "кондишн" можно, невнимательно я доки читала
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37371975
Siyashka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

У меня есть аналогичная проблема, только расскрасить надо не ячейку, а ряд.
Очень понравился последний вариант с condition, но при попытке его реализовать выдается вот такое сообщение об ошибке
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37371976
Siyashka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И собственно вопрос

возможно ли это как-то обойти или лучше реализовать для ячейки через OnDrawCell?
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37372135
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiyashkaИ собственно вопрос

возможно ли это как-то обойти или лучше реализовать для ячейки через OnDrawCell?Ошибка возникает из-за неопределённого значения %query("Color").

Есть два пути решения проблемы:
1) установить в Портале UndefVarBehavior=2
2) добавить защиту в код, например:
Рабочий пример для Caché 2007.1.0Class del.test Extends %ZEN.Component.page
{

/// Этот блок Style содержит определение CSS стиля страницы.
XData Style
{
<style type="text/css">
</style>
}

/// Этот XML блок описывает содержимое этой страницы.
XData Contents [ XMLNamespace = " http://www.intersystems.com/zen"  ]
{
<page xmlns=" http://www.intersystems.com/zen"  title="">
  <tablePane
   queryClass="del.test"
   queryName="test"
   nowrap="false"
   dataSource="columns"
  >
  <column colName="Color" header="Цвет"/>
  <condition
   colName="Color"
   predicate="EQ"
   value="{Color}"
   rowStyle="#(%this.%Eval(&quot;background-color:&quot;_$p($get(%query(&quot;Color&quot;),&quot;white&quot;),&quot; &quot;,1)))#"
  />
  </tablePane>
</page>
}

Query test() As %Query(ROWSPEC = "ID:%Integer,Color:%String")
{
}

ClassMethod testExecute(ByRef qHandle As %Binary) As %Status
{
  set qHandle=1
  set qHandle(1)="red asd"
  set qHandle(2)="blue gg"
  set qHandle(3)="#FF9122 334"
  set qHandle(4)="#00CA00 g6e"
  Quit $$$OK
}

ClassMethod testFetch(ByRef qHandle As %Binary, ByRef Row As %List, ByRef AtEnd As %Integer = 0) As %Status [ PlaceAfter = testExecute ]
{
  set Row=""

  if qHandle>4 {
    set AtEnd=1
  }
  else {
    set Row=$LB(qHandle,qHandle(qHandle))
    set qHandle=qHandle+1
  }
  Quit $$$OK
}

ClassMethod testClose(ByRef qHandle As %Binary) As %Status [ PlaceAfter = testExecute ]
{
  Quit $$$OK
}

}
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37372153
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пустое значение возникает из-за включённого по-умолчанию указателя выбранной строки showRowSelector="true"
Если его выключить, первоначальный пример должен заработать без ошибки.
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37372171
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit, стоит ли советовать людям первый путь?
Мне кажется, если программа изначально не была заточена под такое поведение Cache, это верный способ обрести кучу проблем. Ведь <UNDEFINED> - это четкая и недвусмысленная реакция на ошибку программиста. Неожиданное же значение <пусто> отлавливать будет потруднее, по каким-то отдаленным последствиям...
Т.е., только если изначально разработчик принял аксиому: "у всех неопределенных переменных - пустое значение", проблем у него (наверное) не будет.
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37372214
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov ,

Да, именно советовать не стоит, но предлагать в качестве одного из возможных вариантов решения со ссылкой на документацию, почему бы и нет.
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #37372321
Siyashka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,
спасибо за ответ
буду пробовать
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Цвет ячейки в tablePane
    #38131622
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всех приветствую, не стала заводить новую тему, т.к. вопрос мелкий и тоже касается форматирования ячейки:

Можно ли текст в ячейках tablePane по вертикали прижать к самому верхнему краю? По идее, код должен быть что-то вроде - text-valign: "top"; Размещала в блоке XData Style страницы и в style у столбца, не работает.
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #38131705
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочка , для использования style нужно точно представлять с каким хтмл ты имеешь дело...
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #38131709
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот как выглядит простая строка в tablePane

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<tr zenValue="9" class="tpRow"  id="tr_7_13" onclick="zenPage.getComponent(13).clickHandler(7);" 
ondblclick="zenPage.getComponent(13).dblclickHandler();">
<td class="tpSel" id="selector_7_13">&nbsp;</td>
<td class="tpStr" style="white-space:nowrap;" nowrap>Иванов С.М.</td>
<td class="tpNum" style="white-space:nowrap;" nowrap>2</td>
<td class="tpNum" style="white-space:nowrap;" nowrap>2</td>
<td class="tpNum" style="white-space:nowrap;" nowrap>12</td>
<td class="tpNum" style="white-space:nowrap;" nowrap>3</td>
<td class="tpNum" style="white-space:nowrap;" nowrap>&nbsp;</td>
</tr>



Где появляется твой style?
...
Рейтинг: 0 / 0
Цвет ячейки в tablePane
    #38131712
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АленочкаПо идее, код должен быть что-то вроде
Код: css
1.
text-valign: top;


Такого свойства в ЦСС нет... Но есть
http://htmlbook.ru/css/vertical-align
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Цвет ячейки в tablePane
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]