Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как скрыть фрагмент текста? / 6 сообщений из 6, страница 1 из 1
19.02.2010, 13:20
    #36479858
CacheLot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть фрагмент текста?
Работаю с tablePane, нужно вывести в таблицу текстовое свойство достаточно большого размера, и чтоб не терять компактности и наглядности хочу скрыть часть текста.. Как это сделать? Чтоб допустим в записях, содержащих более 150 символом остальные были скрыты и при необходимости их можно было отобразить, потом опять скрыть и так далее...
Начал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Method Test(pTable As %ZEN.Component.tablePane, pName As %String, pSeed As %String) As %Status
{
    s txt=%query("Text ")
    s L=$L(txt)
    If L> 150  
    {
	s New=$E(txt, 1 , 150 )_"..."
    &html<
    <p>#(New)#</p>
     >   
    }
    else
    {
	&html<
    <p>#(txt)#</p> 
     >
    }
	Quit $$$OK
}



Дальше не знаю куда копать..
...
Рейтинг: 0 / 0
19.02.2010, 13:37
    #36479898
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть фрагмент текста?
дай ссылку в инете посмотреть где это реализовано
...
Рейтинг: 0 / 0
19.02.2010, 15:01
    #36480186
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть фрагмент текста?
CacheLot, например так:
Код: plaintext
1.
2.
3.
4.
5.
 ;должно быть на странице или во внешнем css
 &html<<style type="text/css">.short {width:150em;overflow:hidden;}</style>> 
 ....
 if L> 150   &html<<div class="short">#(New)#</div>>  
 ....
...
Рейтинг: 0 / 0
19.02.2010, 15:03
    #36480192
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть фрагмент текста?
ах, да и высоту тоже ограничить
...
Рейтинг: 0 / 0
21.02.2010, 13:38
    #36481990
CacheLot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть фрагмент текста?
Сделал тестовый пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
//Создаём текст с ограничением на количество выводимых символов

Method Test(pTable As %ZEN.Component.tablePane, pName As %String, pSeed As %String) As %Status
{
    s txt=%query("Text")
    s L=$L(txt)
    If L> 100   
    {
	s New=$E(txt, 1 , 100 )
	s tId0=%query("ID")_0
	s tId1=%query("ID")_1
&html<
<div id="#(tId0)#">
   <p>#(New)#</p>
   <a href="#" onClick="document.getElementById('#(tId0)#').style.display='none'; 
   document.getElementById('#(tId1)#').style.display='';return false;">
   Далее »
   </a>
</div>      


<div id="#(tId1)#" style="display:none">
    <p>#(txt)#</p>
    <a href="#" onClick="document.getElementById('#(tId1)#').style.display='none';
    document.getElementById('#(tId0)#').style.display='';return false;">
    » Скрыть
    </a>
</div>
>
	   
    }
    else
    {
&html<
    <p>#(txt)#</p> 
     >
    }
	
	Quit $$$OK
}


Работает, за основу взял статейку
Вот так примерно я и планировал: так

Может есть ещё более изящные методы для реализации этой идеи?
Ещё хотелось бы обрезать текст по словам, нужно подумать как реализовать...
...
Рейтинг: 0 / 0
21.02.2010, 14:40
    #36482046
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть фрагмент текста?
Более изящно будет вынести скрипт. Примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 s VL= 150  ;отображаемое количество в параметр куда-нибудь
 
 ;в обработке результатов запроса 
 s txt=%query("Text "), L=$L(txt)
 s main=$E(txt, 1 ,VL), add=$E(txt,VL,L) ;основное и дополнительный текст
 w "<p><span class='main' title='",txt,"'>",main,"</span>" ;выводим основную часть текста
 if L>VL { 
  w  "<a href='#' class='next'>Далее >></a>" ;если необходимо показываем ссылку 'Далее'
  w "<span class='add'>",add,"<span>"
 }
 w "</p>"

В CSS:
Код: plaintext
1.
 .add {display:none;}

В скрипте js (отдельный подключаемый файл) или на странице:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
 //В зависимости от того пользуетесь ли Вы js библиотеками, нужна ли кроссбраузерность
 //Но общая идея такая:
 //После загрузки страницы, получить все ссылки Далее (по классу 'next') 
 //и привязаться к событию click (одним обработчиком)
 //или анализировать click на dataGrid (предпочтительней)
 //и отбирать нужные события click по элементу <a> c классом 'next'
 //В обработчике получать источник события - элемент <a>, находить следующий за ним элемент
 //span.add и переключать его style.display между "none" и ""
 //Пример (не проверял, навскидку) для IE без js-библиотек  
 
 //При загрузке страницы
 window.attachEvent("onload",function(){
    var aArr=document.getElementsByTagName("A"); //для всех ссылок
    for(var i= 0 ;i<aArr.length;i++){
      var a=aArr[i]; if (a.className!="next") continue; //ищем только необходимые
      a.attachEvent("onclick",nextClick); //привязываем обработчик nextClick
   }
 });

 //Обработчик
 function nextClick(evt){ 
  var a=evt.sourceElement;  if (!a) return; //И другие проверки
  var add=a.nextSibling; if(!add) return; //И другие проверки
  add.style.display=(add.style.display=="")?"none":"";
 }

...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как скрыть фрагмент текста? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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