nemerleweb

Официальный русскоязычный блог проекта NemerleWeb www.nemerleweb.com

Дерево для rsdn.ru созданное на NemerleWeb

ionoy ionoy
Помнится, Влад предлагал сделать на NemerleWeb новое дерево/меню для rsdn.ru.

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

Если кому интересно, посмотреть можно здесь: http://m.rsdn.ru
Самое интересное — это код. Вся структура меню состоит из трёх Unit'ов

1. MainPage https://github.com/NemerleWeb/NemerleWeb/blob/master/NemerleWeb.RSDN/MVVM/MainPage.n
Здесь рендерится общая структура страницы: левая часть (поиск, прикреплённые ветки, меню) и правая, которая содержит iframe для страниц rsdn.

2. TreeNode https://github.com/NemerleWeb/NemerleWeb/blob/master/NemerleWeb.RSDN/MVVM/TreeNode.n
Собственно, нода. Всё что она делает — это рендерит свои под-ноды и подгружает их по мере надобности. Одновременно является объектом, который используется как на сервере, так и на клиенте.

3. Search https://github.com/NemerleWeb/NemerleWeb/blob/master/NemerleWeb.RSDN/MVVM/Search.n
Поиск. Тут стоит обратить внимание на макрос throttle, который генерирует код примерно следующего содержания:

window.clearTimeout(_timeout1);
_timeout1 = window.setTimeout(() => {
  ...code...
}, 500)


При этом генерируется поле _timeout{X} для каждого отдельного throttle.

На сервере есть ещё всего один "лишний" класс, который отвечает за загрузку дерева в память: https://github.com/NemerleWeb/NemerleWeb/blob/master/NemerleWeb.RSDN/Models/TreeLoader.n

Всё остальное генерируется фреймворком.
VladD2
VladD2 Новости NemerleWeb
24.05.2013 08:41
Здравствуйте, ionoy, Вы писали:

I>Помнится, Влад предлагал сделать на NemerleWeb новое дерево/меню для rsdn.ru.


I>На этой неделе удалось допилить это дерево до состояния, когда можно уже показывать общественности.

I>Пока из новых фишек только поиск и возможность прикреплять под-ветки на главную страницу.

Отличная работа! Идея с пинед-ветками вообще замечательная.

Но есть ряд замечаний.

1. Активная ветка не выделяется визуально. По сему невозможно понять, что сейчас открыто.
2. Во вложенных элементах слишком большой отступ. Ветки уезжают вправо. Надо сделать меньших отступ. Плюсы должны начинаться сразу по окочании плюсов родительского дерева.
3. Нужно показывать кнопочки для запиненых веток в дереве (не только при наведении мыши, а всегда).
4. В окне поиска хорошо бы показывать подсказку (как в окне навигации броузера).
5. При нажатии элемента с шифтом соответствующая страница должна открываться в отдельной закладке броузера (старая версия ведет себя именно так).
6. При попытке посмотреть дерево в броузере телефона, в портретном режиме размер места отводимого под дерево был столь урезан, что текст не вмещался. В альбомном (повернутом на бок) режиме тот же эффект наблюдается если открыть ветку по глубже. Нужно с этим побороться. И вообще, нужно сделать так чтобы в телефоне деревом было пользоваться так же удобно как и на компьютере.
7. Цвета не очень. Но это уже фигня.
8. Настройки нужно хранить не в куках, а не сервере. Это не дело когда на каждом девайсе нужно настраивать окружение. Доложно быть так — залогинился и работаешь со своим окружением на любом машине в любом броузере.
9. Вообще нет вертикального сплитера, так что изменить размеры окна не получается. В мобильном режиме сплитеры вообще не нужны. Долно показываться только дерево, а другие страницы всегда отрываться в новых закладках/окнах. Плюс размеры элементов в мобильном режиме должны быть крупнее, чтобы в них можно было попадать пальцем.


Вот это:
    public IconUrl : string 
    {      
      get {        
        def suffix = match(IsOpened, HasChildren) {
                      | (false, true) => "c.gif" 
                      | (true, _) => "o.gif";
                      | _ => "s.gif";
                     };
        "http://rsdn.ru/images/tree/" + Icon + suffix;
      }
    }

плохое решение. Тут нужно усложнять. Нужно сделать так чтобы были наборы иконок, и вообще, стилей. Лучше даже чтобы стиль можно было выбрать пользователем.


ЗЫ

Могу дать доступ на сервер рсдн, чтобы страница работала прямо на нем.
ionoy
ionoy
25.05.2013 07:54
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, ionoy, Вы писали:


VD>1. Активная ветка не выделяется визуально. По сему невозможно понять, что сейчас открыто.

VD>2. Во вложенных элементах слишком большой отступ. Ветки уезжают вправо. Надо сделать меньших отступ.
VD>Плюсы должны начинаться сразу по окочании плюсов родительского дерева.
VD>3. Нужно показывать кнопочки для запиненых веток в дереве (не только при наведении мыши, а всегда).
Согласен.

VD>4. В окне поиска хорошо бы показывать подсказку (как в окне навигации броузера).

Watermark?

VD>5. При нажатии элемента с шифтом соответствующая страница должна открываться в отдельной закладке броузера (старая версия ведет себя именно так).

Ок, посмотрим.

VD>6. При попытке посмотреть дерево в броузере телефона, в портретном режиме размер места отводимого под дерево был столь урезан, что текст не вмещался. В альбомном (повернутом на бок) режиме тот же эффект наблюдается если открыть ветку по глубже. Нужно с этим побороться. И вообще, нужно сделать так чтобы в телефоне деревом было пользоваться так же удобно как и на компьютере.

Да, с телефоном пока проблема. Я там только ошибки рендеринга исправил, о юзабилити не думал.

VD>8. Настройки нужно хранить не в куках, а не сервере. Это не дело когда на каждом девайсе нужно настраивать окружение. Доложно быть так — залогинился и работаешь со своим окружением на любом машине в любом броузере.

У нас нет доступа к рсдн серверу, поэтому и привязывать к логину пока не получится.

VD>9. Вообще нет вертикального сплитера, так что изменить размеры окна не получается. В мобильном режиме сплитеры вообще не нужны. Долно показываться только дерево, а другие страницы всегда отрываться в новых закладках/окнах. Плюс размеры элементов в мобильном режиме должны быть крупнее, чтобы в них можно было попадать пальцем.

+1

VD>Вот это:

VD>
VD>    public IconUrl : string 
VD>    {      
VD>      get {        
VD>        def suffix = match(IsOpened, HasChildren) {
VD>                      | (false, true) => "c.gif" 
VD>                      | (true, _) => "o.gif";
VD>                      | _ => "s.gif";
VD>                     };
VD>        "http://rsdn.ru/images/tree/" + Icon + suffix;
VD>      }
VD>    }
VD>

VD>плохое решение. Тут нужно усложнять. Нужно сделать так чтобы были наборы иконок, и вообще, стилей. Лучше даже чтобы стиль можно было выбрать пользователем.
Эта логика фактически копирует текущую, я сам ничего не выдумывал. Предлагайте наборы иконок, сделаем сменные шкуры.

VD>Могу дать доступ на сервер рсдн, чтобы страница работала прямо на нем.

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

VD>Изначально я предлагал сделать возможность поиска по подветкам. Хорошо бы придумать что-нибудь вроде этого. Тогда можно было бы искать ".Net" только среди форумов, что облегчило бы поиск именно форумов.

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

VD>У нас сейчас используется следующий метод. Если в юрле есть "?", то сайт открывает страницу вместе с деревом и делает активными все ветки указывающие на эту страницу:

http://rsdn.ru/?article/cpp/Cpp11NewStd.xml
ОК, посмотрим.
VladD2
VladD2
26.05.2013 10:55
Здравствуйте, ionoy, Вы писали:

VD>>4. В окне поиска хорошо бы показывать подсказку (как в окне навигации броузера).

I>Watermark?

Нет. Выпадающий список с вариантами.

Вообще, подумалось, что это дело можно под консоль стилизовать. Консолька с автодполнением. Будет прикольно.

I>У нас нет доступа к рсдн серверу, поэтому и привязывать к логину пока не получится.


В понедельник постучись на скайп — сделаем.

VD>>
VD>>                      | (false, true) => "c.gif" 
VD>>                      | (true, _) => "o.gif";
VD>>                      | _ => "s.gif";
VD>>                     };
VD>>        "http://rsdn.ru/images/tree/" + Icon + suffix;
VD>>

VD>>плохое решение. Тут нужно усложнять. Нужно сделать так чтобы были наборы иконок, и вообще, стилей. Лучше даже чтобы стиль можно было выбрать пользователем.
I>Эта логика фактически копирует текущую, я сам ничего не выдумывал. Предлагайте наборы иконок, сделаем сменные шкуры.

Надо просто каталог в переменную пометить и где-нить считывание настройки из профиля сделать.

VD>>Изначально я предлагал сделать возможность поиска по подветкам. Хорошо бы придумать что-нибудь вроде этого. Тогда можно было бы искать ".Net" только среди форумов, что облегчило бы поиск именно форумов.

I>Поиск по подветкам неудобен, т.к. результаты поиска могут находится на много уровней ниже и раскиданы по разным частям дерева. Добраться до них всех, будет нетривиальным занятием.

Попробуй найти форум по .Net или Nemerle. Тебе будет выдано туева хуча веток где встречается .Net или Nemerle. Найти нужный элемент очень сложно. Если же искать только по форумам, то найти будет элементарно (форумов по .Net — три, а по Nemerle — два.

Можно, конечно, попробовать поднимать вверх результаты в которых искомое слова находится вначале названия и те имена которых полностью совпадают с исходной строкой. Кроме того имеет смысл, тогда, поднимать в верх форумы.
_NN_
_NN_
26.05.2013 11:27
Здравствуйте, VladD2, Вы писали:

VD>Можно, конечно, попробовать поднимать вверх результаты в которых искомое слова находится вначале названия и те имена которых полностью совпадают с исходной строкой. Кроме того имеет смысл, тогда, поднимать в верх форумы.


Мне кажется будет лучшим решением добавить категории как в поиске гугла.
Скажем: Все | Форумы | Статьи
VladD2
VladD2
26.05.2013 11:36
Здравствуйте, _NN_, Вы писали:

_NN>Мне кажется будет лучшим решением добавить категории как в поиске гугла.

_NN>Скажем: Все | Форумы | Статьи

Эти категории есть в виде корневых веток дерева. Я как раз и предлагал прикрепить поиск к ним. Ну, типа наводишь на ветку мышь, а рядом появляется полупрозрачная кнопка с лупой. подводишь к ней мышь и появляется окошко поиска. При поиске в нем поиск идет только по подветкам текущей ветки.
_NN_
_NN_
26.05.2013 11:39
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _NN_, Вы писали:


_NN>>Мне кажется будет лучшим решением добавить категории как в поиске гугла.

_NN>>Скажем: Все | Форумы | Статьи

VD>Эти категории есть в виде корневых веток дерева. Я как раз и предлагал прикрепить поиск к ним. Ну, типа наводишь на ветку мышь, а рядом появляется полупрозрачная кнопка с лупой. подводишь к ней мышь и появляется окошко поиска. При поиске в нем поиск идет только по подветкам текущей ветки.


Мне кажется это менее удобно.
Нужно найти корневую ветку, подвести , попасть в лупу.

А так вбил в поиск, не нашлось с первого раза, выбрал категорию и нашел.
VladD2
VladD2
26.05.2013 11:41
Здравствуйте, _NN_, Вы писали:

_NN>Мне кажется это менее удобно.

_NN>Нужно найти корневую ветку, подвести , попасть в лупу.

_NN>А так вбил в поиск, не нашлось с первого раза, выбрал категорию и нашел.


Я не агитирую за конкретное решение. Но есть проблема поиска часто встречаемых фраз и ее нужно как-то решить.
Ziaw
Ziaw
27.05.2013 09:35
Здравствуйте, _NN_, Вы писали:

_NN>Мне кажется будет лучшим решением добавить категории как в поиске гугла.

_NN>Скажем: Все | Форумы | Статьи

А мне кажется, что надо просто выдавать в поиске форумы первыми, как-то так:

.NET — Форум
.NET GUI — Форум
ASP.NET — Форум
Хеширование, шифрование и цифровая подпись с использованием CryptoAPI и .Net CLR

Ну и иконками выделить.
VladD2
VladD2
26.06.2013 06:01
Здравствуйте, Ziaw, Вы писали:
Z>А мне кажется, что надо просто выдавать в поиске форумы первыми, как-то так:

Z>.NET — Форум

Z>.NET GUI — Форум
Z>ASP.NET — Форум
Z>Хеширование, шифрование и цифровая подпись с использованием CryptoAPI и .Net CLR

Тут проблема в том, что сейчас ищется только подстрока (а не шаблон). А стало быть отфильтровать по " — Форум" будет не просто, так как придется писать окончание имени форума. Для ".NET GUI — Форум" оно может и не сложно. Но для форумов с длинными именами будет не так удобно.

Тут нужно или вделать более сложный поиск (например, ищущий вхождение нескольких слов, если они разделены пробелами: ".NE Фор" найдет все форумы по дотнету), или дать таки возможность задать тип разыскиваемого контента.

"Строка " — Форум" в именах всех форумов будет смотреться не очень красиво. Дерево будет удлинняться. К статьям так же придется дописывать " — Статья".

Я вот подумал, что можно поступить следующим образом — выводить список всех вхождений, как сейчас, но кроме того, перед списком, выводить набор кнопок-тегов (по одной для каждого типа веток). Тогда для подстроки ".NET" будет выдан набор кнопок:

[ Все ][ Статьи ][ Форумы ][ Файлы ][ Проекты ]

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

Z>Ну и иконками выделить.


Это уже есть. Но по ним не поищешь.
Ziaw
Ziaw
27.06.2013 01:32
Здравствуйте, VladD2, Вы писали:

VD>Тут проблема в том, что сейчас ищется только подстрока (а не шаблон). А стало быть отфильтровать по " — Форум" будет не просто, так как придется писать окончание имени форума. Для ".NET GUI — Форум" оно может и не сложно. Но для форумов с длинными именами будет не так удобно.


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

Поскольку в таком случае ни исключать форумы ни оставлять только их смысла нет, то смысл в доп. контроле остается только для того, чтобы искать проекты и файлы. Сдается мне, что эти сценарии настолько редко используемы, что необходимость держать ради них в дереве специальный механизм довольно сомнительна. Ведь есть поиск, лучше вынести в него. Вообще проекты это не то, на что стоит делать ставку рсдн, но это уже офтопик.
ionoy
ionoy
30.05.2013 03:05
Здравствуйте, VladD2, Вы писали:

VD>1. Активная ветка не выделяется визуально. По сему невозможно понять, что сейчас открыто.

VD>2. Во вложенных элементах слишком большой отступ. Ветки уезжают вправо. Надо сделать меньших отступ. Плюсы должны начинаться сразу по окочании плюсов родительского дерева.
VD>3. Нужно показывать кнопочки для запиненых веток в дереве (не только при наведении мыши, а всегда).
VD>4. В окне поиска хорошо бы показывать подсказку (как в окне навигации броузера).
VD>5. При нажатии элемента с шифтом соответствующая страница должна открываться в отдельной закладке броузера (старая версия ведет себя именно так).
VD>6. При попытке посмотреть дерево в броузере телефона, в портретном режиме размер места отводимого под дерево был столь урезан, что текст не вмещался. В альбомном (повернутом на бок) режиме тот же эффект наблюдается если открыть ветку по глубже. Нужно с этим побороться. И вообще, нужно сделать так чтобы в телефоне деревом было пользоваться так же удобно как и на компьютере.
VD>7. Цвета не очень. Но это уже фигня.
VD>8. Настройки нужно хранить не в куках, а не сервере. Это не дело когда на каждом девайсе нужно настраивать окружение. Доложно быть так — залогинился и работаешь со своим окружением на любом машине в любом броузере.
VD>9. Вообще нет вертикального сплитера, так что изменить размеры окна не получается. В мобильном режиме сплитеры вообще не нужны. Долно показываться только дерево, а другие страницы всегда отрываться в новых закладках/окнах. Плюс размеры элементов в мобильном режиме должны быть крупнее, чтобы в них можно было попадать пальцем.

1, 2, 3, 5 (только не с шифтом, а с контролом), 9 (сплиттер) — сделал.
VladD2
VladD2
30.05.2013 06:01
Здравствуйте, ionoy, Вы писали:

VD>>4. В окне поиска хорошо бы показывать подсказку (как в окне навигации броузера).

VD>>5. При нажатии элемента с шифтом соответствующая страница должна открываться в отдельной закладке броузера (старая версия ведет себя именно так).
VD>>6. При попытке посмотреть дерево в броузере телефона, в портретном режиме размер места отводимого под дерево был столь урезан, что текст не вмещался. В альбомном (повернутом на бок) режиме тот же эффект наблюдается если открыть ветку по глубже. Нужно с этим побороться. И вообще, нужно сделать так чтобы в телефоне деревом было пользоваться так же удобно как и на компьютере.
VD>>7. Цвета не очень. Но это уже фигня.
VD>>8. Настройки нужно хранить не в куках, а не сервере. Это не дело когда на каждом девайсе нужно настраивать окружение. Доложно быть так — залогинился и работаешь со своим окружением на любом машине в любом броузере.
VD>>9. Вообще нет вертикального сплитера, так что изменить размеры окна не получается. В мобильном режиме сплитеры вообще не нужны. Долно показываться только дерево, а другие страницы всегда отрываться в новых закладках/окнах. Плюс размеры элементов в мобильном режиме должны быть крупнее, чтобы в них можно было попадать пальцем.

I>1, 2, 3, 5 (только не с шифтом, а с контролом), 9 (сплиттер) — сделал.


В современной версии с шифтом открывается новое окно броузера, а с контролом новая закладка. Хорошо бы чтобы и в новой было так же.

Сплитер хороший. Но его нужно бы покрасить в голубенкий (как сейчас на сайте).

Собственно цвета тоже надо бы подправить. Но лучше бы было сделать набор настроек, поместить его в отдельный каталог и позволить пользователю выберать этот каталог (как бы выбирать стили).

С мобильником стало получше, но проблемы не исчезли. Все же нужно определять, что броузер мобильный и выдавать только одно дерево. Кроме того нужно увеличить размеры элементов в мобильной версии. Сейчас попасть в них не просто даже на моей лопате (Samsung Galaxy Note 2).

С кнопками и пришпиливанием тоже не все хорошо. Попасть в них сложно (но это решится, если увеличить размер элемента). Причем даже попав поведение несколько странное. Не понятно пришпилилась ветка или нет. Анимация видимо запаздывает.

Стукнись мне в скайп. Создам тебе экаунт и попробуешь на РСДН все это дело запустить (через терминалку).
Tanker
Tanker Новости NemerleWeb
24.05.2013 08:54
Здравствуйте, ionoy, Вы писали:

I>Если кому интересно, посмотреть можно здесь: nemerlewebrsdn.apphb.com

I>Самое интересное — это код. Вся структура меню состоит из трёх Unit'ов

А как это будет выгледть ? Где можно покликать ?
VladD2
VladD2
24.05.2013 09:01
Здравствуйте, Tanker, Вы писали:

I>>Если кому интересно, посмотреть можно здесь: nemerlewebrsdn.apphb.com


T>А как это будет выгледть ? Где можно покликать ?


Ты же сам ссылку процитировавший. Кликни по ней и покликай.
Tanker
Tanker
24.05.2013 09:44
Здравствуйте, VladD2, Вы писали:

I>>>Если кому интересно, посмотреть можно здесь: nemerlewebrsdn.apphb.com


T>>А как это будет выгледть ? Где можно покликать ?


VD>Ты же сам ссылку процитировавший. Кликни по ней и покликай.


Эээ, я думал новое это новое, а не старое переписаное Или предполагается сделать все тоже что есть сейчас только на другом движке ?
VladD2
VladD2
24.05.2013 10:55
Здравствуйте, Tanker, Вы писали:

T>Эээ, я думал новое это новое, а не старое переписаное Или предполагается сделать все тоже что есть сейчас только на другом движке ?


У нас явное недопонимание.

Новое дерево, естественно, должно воспроизводить старую функциональность. Кроме того хочется новую. Тот же поиск. Вот еще припинивание появилось.
VladD2
VladD2 Дерево для rsdn.ru созданнео на NemerleWeb
24.05.2013 09:00
Здравствуйте, ionoy, Вы писали:

I>Пока из новых фишек только поиск и возможность прикреплять под-ветки на главную страницу.


Что касается поиска. В целом он работает не плохо. Но особа часто встречающиеся слова найти очень не просто. Так, например, очень тяжело найти форум по .Net. В его названии только ".Net", а это слово используется слишком часто.

Изначально я предлагал сделать возможность поиска по подветкам. Хорошо бы придумать что-нибудь вроде этого. Тогда можно было бы искать ".Net" только среди форумов, что облегчило бы поиск именно форумов.
VladD2
VladD2 Дерево для rsdn.ru созданнео на NemerleWeb
24.05.2013 09:07
Вот еще что...

Нужна возможность получить url текущей открытой страницы (как сейчас на сайте).

А так же чтобы можно при переходе на такой элемент дерево синхронизировалось.

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

У нас сейчас используется следующий метод. Если в юрле есть "?", то сайт открывает страницу вместе с деревом и делает активными все ветки указывающие на эту страницу:
http://rsdn.ru/?article/cpp/Cpp11NewStd.xml

Если же юрла вбивается без "?", то открывается страница без дерева.

Нужно поддержать данную традицию.
VladD2
VladD2 Дерево для rsdn.ru созданнео на NemerleWeb
24.05.2013 09:20
На мобильниках вообще нужно отдельно проверить. Глюков очень много. Не удается даже запинить найденную ветку.

В отдельном окне тоже не открывает.
WolfHound
WolfHound Дерево для rsdn.ru созданнео на NemerleWeb
24.05.2013 11:08
Здравствуйте, ionoy, Вы писали:

    public AddPinned(id : string) : void
    {
      def pinned = nweb.getCookie("pinned");
      
      if(pinned == null) nweb.setCookie("pinned", id, 360);
      else nweb.setCookie("pinned", pinned + "," + id, 360);
      
      UpdatePinned();
    }
    
    public RemovePinned(id : string) : void
    {
      def pinned = nweb.getCookie.[string]("pinned");
      when(pinned != null) nweb.setCookie("pinned", pinned.Replace(re (",?" + id) "g", ""), 360);
      
      UpdatePinned();
    }
    
    public static GetPinned() : IEnumerable[string]
    {
      match(nweb.getCookie.[string]("pinned")) {
      | null => []
      | str => str.Split(',')
      }
    }

Вот это мне не нравится.
Нужно сделать ДСЛ для печенек.
cookie Pinned : Set[int];

А вся остальная байда должна генерироваться.
Ибо если кто-то захочет такую печеньку
cookie Pinned : Set[string];

или такую
cookie Pinned : Map[int, Set[string]];

то всё станет очень сложно.

Ну и необходимость везде писать UpdatePinned тоже плохо. Система должна сама реагировать на изменение печеньки.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
ionoy
ionoy
25.05.2013 08:07
Здравствуйте, WolfHound, Вы писали:

WH>Нужно сделать ДСЛ для печенек.

Согласен, DSL пригодится.

WH>
WH>cookie Pinned : Set[int];
WH>

Тут надо определится с коллекциями, которые можно будет сериализовывать. Далеко не все .NET контейнеры для этого подходят.

WH>Ну и необходимость везде писать UpdatePinned тоже плохо. Система должна сама реагировать на изменение печеньки.

В принципе, если у нас код наподобие такого:

ValueInCookies : string { get { //read value from cookies } }
   
Method() : void {
   "Hello, " + ValueInCookies;
}


То работать будет и сейчас.
У нас по-любому сейчас нет выборочного биндинга. На любое изменение все биндинги пересчитываются заново.
WolfHound
WolfHound
25.05.2013 01:13
Здравствуйте, ionoy, Вы писали:

I>Тут надо определится с коллекциями, которые можно будет сериализовывать. Далеко не все .NET контейнеры для этого подходят.

Set, MultiSet, Dictionary, MultiDictionary и List.
Этого думаю хватит.

I>У нас по-любому сейчас нет выборочного биндинга. На любое изменение все биндинги пересчитываются заново.

Это плохо. До релиза нужно исправить.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
ionoy
ionoy
25.05.2013 01:51
Здравствуйте, WolfHound, Вы писали:

I>>У нас по-любому сейчас нет выборочного биндинга. На любое изменение все биндинги пересчитываются заново.

WH>Это плохо. До релиза нужно исправить.

Это не очень хорошо, согласен. Но пока перформанс устраивает, просто нет смысла браться за такую большую работу. Пока ещё не решены более важные вопросы.
Есди кто готов помочь, то я с радостью бы объяснил что примерно надо делать, но самому просто некогда.
wildwind
wildwind Дерево для rsdn.ru созданнео на NemerleWeb
26.05.2013 03:01
При подведении указателя к иконке пина она исчезает.
Opera 12.02.
_NN_
_NN_
26.05.2013 04:44
Здравствуйте, wildwind, Вы писали:

W>При подведении указателя к иконке пина она исчезает.

W>Opera 12.02.

Оперу еще никто не проверял.
Может знаете в чем причина ? Скорее всего там стиль нужно подправить и оно заработает.

P.S.
Ждем Оперу на WebKit
gravatar
Аноним
26.05.2013 06:52
_NN>Оперу еще никто не проверял.
_NN>Может знаете в чем причина ? Скорее всего там стиль нужно подправить и оно заработает.


.node .node-caption {
display: block;
margin-left: 35px;
margin-right: 26px;
}

gravatar
Аноним
26.05.2013 06:59
Здравствуйте, Аноним, Вы писали:


_NN>>Оперу еще никто не проверял.

_NN>>Может знаете в чем причина ? Скорее всего там стиль нужно подправить и оно заработает.


А>

А>.node .node-caption {
А> display: block;
А> margin-left: 35px;
А> margin-right: 26px;
А>}


Маргин задает расстояние между элементами, которое никому не принадлежит. Из-за этого, судя по всему, ховер выключается и выключает видимость булавки.

Можно заменить на

padding-right: 26 px;


В этом случае это будет внутренний отступ от границы и это пространство будет принадлежать элементу node-caption и ховер будет работать.
_NN_
_NN_
26.05.2013 07:40
Здравствуйте, Аноним, Вы писали:

А>Можно заменить на


А>

А>padding-right: 26 px;


А>В этом случае это будет внутренний отступ от границы и это пространство будет принадлежать элементу node-caption и ховер будет работать.


Проблему решило.
Спасибо
Dolios
Dolios Дерево для rsdn.ru созданнео на NemerleWeb
05.06.2013 08:44
Здравствуйте, ionoy, Вы писали:

Господа старперы (не сочтите за оскорбление), за последние 5 лет стали популярны устройства, в народе называемые планшетами. Представьте, это такая штука, как ноутбук у которого оторвали клавиатуру.
Эти устройства, как правило, не очень большого размера. Тыкают в них пальцем. И, напоминаю, основная аудитория рсдн-а мужики, соответственно, пальцы у них довольно крупного размера.

В связи с вышесказаным, прошу принять следующие меры:
— увеличить иконку [+],
— увеличить расстояние между строками
— немного отодвинуть иконки [+] от края экрана
ionoy
ionoy
05.06.2013 09:59
Здравствуйте, Dolios, Вы писали:

D>- увеличить расстояние между строками

Тут компромисс между количеством помещающихся на том же планшете/телефоне строк и удобством тыкания. Можно будет ещё подрегулировать.

D>- немного отодвинуть иконки [+] от края экрана


Тыкать, кстати, можно не только в "+", но и в саму надпись. То, что на самом РСДН это пока не так, имхо, очень неправильно.
VladD2
VladD2
05.06.2013 10:43
Здравствуйте, ionoy, Вы писали:

D>>- увеличить расстояние между строками

I>Тут компромисс между количеством помещающихся на том же планшете/телефоне строк и удобством тыкания. Можно будет ещё подрегулировать.

А можно, в мобильной версии, совсем немного увеличить размер строк но при прикосновении пальцем делать ветку на которую он попал больше (эффект лупы), а клик отрабатывать на отпускание?

Тогда можно будет нажать на экран и протащить палец вверх/вниз/вправо/влево чтобы выбрать именно то элемент что нужен (в том числе осуществить выбор между плюсом, телом и пином).
ionoy
ionoy
06.06.2013 08:10
Здравствуйте, VladD2, Вы писали:

VD>А можно, в мобильной версии, совсем немного увеличить размер строк но при прикосновении пальцем делать ветку на которую он попал больше (эффект лупы), а клик отрабатывать на отпускание?


VD>Тогда можно будет нажать на экран и протащить палец вверх/вниз/вправо/влево чтобы выбрать именно то элемент что нужен (в том числе осуществить выбор между плюсом, телом и пином).


Не уверен, что это будет очевидный для пользователей UI, но попробовать можно.
VladD2
VladD2
06.06.2013 04:42
Здравствуйте, ionoy, Вы писали:

I>Не уверен, что это будет очевидный для пользователей UI, но попробовать можно.


Дык тут только путем проб и ошибок и можно найти хорошее решение.
VladD2
VladD2
05.06.2013 10:51
Здравствуйте, ionoy, Вы писали:

I>Тыкать, кстати, можно не только в "+", но и в саму надпись. То, что на самом РСДН это пока не так, имхо, очень неправильно.


Сначала было огласился. Но потом понял, что все не так просто. Дело в том, что у нас на узловых ветках дерева вешается разного рода агрегированная информация. Ну, там список статей с аннотациями (что не влезет в дерево) и т.п.

По сему просто делать тело аналогом нажатие на плюс нельзя.
ionoy
ionoy
06.06.2013 10:02
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, ionoy, Вы писали:


I>>Тыкать, кстати, можно не только в "+", но и в саму надпись. То, что на самом РСДН это пока не так, имхо, очень неправильно.


VD>Сначала было огласился. Но потом понял, что все не так просто. Дело в том, что у нас на узловых ветках дерева вешается разного рода агрегированная информация. Ну, там список статей с аннотациями (что не влезет в дерево) и т.п.


VD>По сему просто делать тело аналогом нажатие на плюс нельзя.


Повторюсь, имхо, то что сейчас происходит при нажатии на название ветки очень неправильно. В одних случаях это нажатие раскрывает ветку, в других показывает агрегированую информацию. Одно и то же действие должно всегда приводить к одному результату.
Ну и смысла в расширенном списке подветок, я, если честно, не вижу.
VladD2
VladD2
06.06.2013 12:54
Здравствуйте, ionoy, Вы писали:

I>Повторюсь, имхо, то что сейчас происходит при нажатии на название ветки очень неправильно. В одних случаях это нажатие раскрывает ветку, в других показывает агрегированую информацию. Одно и то же действие должно всегда приводить к одному результату.


Согласен. Но это должно быть открытие контента, а не раскрытие ветки.

I>Ну и смысла в расширенном списке подветок, я, если честно, не вижу.


Там аннотации выводятся. У нас банально нет другого способа прочесть аннотации. В принципе если сделать вывод аннотаций хинтом в дереве, то можно на это забить, наверно.
Dolios
Dolios
06.06.2013 01:40
Здравствуйте, VladD2, Вы писали:

VD>В принципе если сделать вывод аннотаций хинтом в дереве

Хинт по mouseover имеется в виду?
VladD2
VladD2
05.06.2013 10:48
Здравствуйте, Dolios, Вы писали:

D>Господа старперы (не сочтите за оскорбление),


Господин пионер. Такое трудно не счесть за оскорбление. Поэтому в следующий раз просьба быть по уважительнее, или придется банить.

D>за последние 5 лет стали популярны устройства, в народе называемые планшетами.


"Старперы" как бэ в крусе. Более того активно пользуются оными девайсами, да и смартфонами.

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

D>В связи с вышесказаным, прошу принять следующие меры:

D>- увеличить иконку [+],
D>- увеличить расстояние между строками
D>- немного отодвинуть иконки [+] от края экрана

Тут важен компромис между удобством попадания и объемом отображаемых на девайсе данных. В конце концов хочется иметь возможность посещать РСДН и со смартфонов. Мой, правда, тянет на маленький планшет. Но есть люди и с Айфонами.
Dolios
Dolios
05.06.2013 12:16
Здравствуйте, VladD2, Вы писали:

D>>Господа старперы (не сочтите за оскорбление),

VD>Господин пионер. Такое трудно не счесть за оскорбление. Поэтому в следующий раз просьба быть по уважительнее, или придется банить.
Следующий раз смайлик поставлю, раз без него не понятно, что это шутка.

VD>Тут важен компромис между удобством попадания и объемом отображаемых на девайсе данных. В конце концов хочется иметь возможность посещать РСДН и со смартфонов. Мой, правда, тянет на маленький планшет. Но есть люди и с Айфонами.

Данные можно проскроллить. А вот попадать пальцем в иконку на миллиписичном экране айфона, наверно, то еще удовольствие.

Пользуясь случаем хочу сделать еще рацпредложения.

Цифры с номерами страниц прилеплены к самому низу экрана и расстояние между ними тоже маленькое. Можно их чуть преподнять и расстояние между ними чуть увеличить?
И, самое главное. На планшете в ландшафтном режиме невозможно написать сообщение, т.к. когда появляется экранная клавиатура, поле ввода текста схлопывается до 5px в высоту. Для решения этой проблемы достаточно выставить min-height у поля ввода текста. Проблема решается за 2 минуты, я об этом писал в другой теме, но воз и ныне там.
VladD2
VladD2
05.06.2013 05:10
Здравствуйте, Dolios, Вы писали:

D>Цифры с номерами страниц прилеплены к самому низу экрана и расстояние между ними тоже маленькое. Можно их чуть преподнять и расстояние между ними чуть увеличить?


Что за номера страниц? О чем речь?

D>И, самое главное. На планшете в ландшафтном режиме невозможно написать сообщение, т.к. когда появляется экранная клавиатура, поле ввода текста схлопывается до 5px в высоту. Для решения этой проблемы достаточно выставить min-height у поля ввода текста. Проблема решается за 2 минуты, я об этом писал в другой теме, но воз и ныне там.


Мы здесь обсуждаем только дерево. Закончим с деревом, можно будет поговорить и о остальных частях сайта.
Dolios
Dolios
06.06.2013 06:43
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Dolios, Вы писали:

D>>Цифры с номерами страниц прилеплены к самому низу экрана и расстояние между ними тоже маленькое. Можно их чуть преподнять и расстояние между ними чуть увеличить?
VD>Что за номера страниц? О чем речь?
Топик когда читаешь, если сообщений много, они показываются на нескольких страницах, вот внизу номера этих самых страниц и выводятся

D>>И, самое главное. На планшете в ландшафтном режиме невозможно написать сообщение, т.к. когда появляется экранная клавиатура, поле ввода текста схлопывается до 5px в высоту. Для решения этой проблемы достаточно выставить min-height у поля ввода текста. Проблема решается за 2 минуты, я об этом писал в другой теме, но воз и ныне там.

VD>Мы здесь обсуждаем только дерево. Закончим с деревом, можно будет поговорить и о остальных частях сайта.
Да я не против, просто баг фиксится за 2 минуты, но жутко раздражает. Я в другой теме это уже писал, но никто не отреагировал. Может тут кто прочитает и запомнит, что есть такая проблема. Хотя, почему бы ее сразу не исправить, я не понимаю.
VladD2
VladD2
06.06.2013 04:50
Здравствуйте, Dolios, Вы писали:

D>Топик когда читаешь, если сообщений много, они показываются на нескольких страницах, вот внизу номера этих самых страниц и выводятся


Это в плоском режиме? Да, там ссылки мелковаты.
kaa.python
kaa.python Дерево для rsdn.ru созданнео на NemerleWeb
13.06.2013 05:25
А кто-нибудь пробовал эту радость на мобильном устройстве открыть? На iOS есть дерево, форума нет, что на мой взгляд не правильно.
_NN_
_NN_
13.06.2013 05:28
Здравствуйте, kaa.python, Вы писали:

KP>А кто-нибудь пробовал эту радость на мобильном устройстве открыть? На iOS есть дерево, форума нет, что на мой взгляд не правильно.

Форум то как раз открывается (справа видно немного его), но вот сплиттер не дает двигать экран.
Кто силен в html-е и готов выделить время на фикс, милости просим.
ionoy
ionoy
14.06.2013 07:24
Здравствуйте, kaa.python, Вы писали:

KP>А кто-нибудь пробовал эту радость на мобильном устройстве открыть? На iOS есть дерево, форума нет, что на мой взгляд не правильно.


Для мобильников уже всё продумано, но ничего не сделано Пока что была задача показать прототип, так что недочётов очень много. Как только снова появится время, то обязательно допилим и функционал и внешний вид.
Mamut
Mamut Дерево для rsdn.ru созданнео на NemerleWeb
25.06.2013 02:47
 public View() : string
    {
      <#
        <div class="page">
          <div class="left">          
            <div $when(Root != null) class="root">
              <div template="$(template(Search))" />
              <div $when(string.IsNullOrEmpty(Search.SearchTerm))>
....


Дизайнеру не отдать, без перекомпиляции не изменить
_NN_
_NN_
25.06.2013 03:37
Здравствуйте, Mamut, Вы писали:

M>Дизайнеру не отдать, без перекомпиляции не изменить


Ну это можно сказать тогда и про Spark:
<viewdata products="IEnumerable[[Product]]"/>
<ul if="products.Any()">
  <li each="var p in products">${p.Name}</li>
</ul>
<else>
  <p>No products available</p>
</else>


И про Razor:
<ul>
@for (int i = 0; i < 10; i++) {
<li>@i</li>
}
</ul>



Приветствуется конструктивная критика.
Предлагайте как улучшить.
Mamut
Mamut
25.06.2013 03:50
M>>Дизайнеру не отдать, без перекомпиляции не изменить

_NN>Ну это можно сказать тогда и про Spark:

_NN>И про Razor:
_NN>


И про стопятьсот других таких же подходов. От того, что кто-то так делает, это не становится правильным или удобным

_NN>Приветствуется конструктивная критика.

_NN>Предлагайте как улучшить.

Вынести в отдельные текстовые файлы. С возможности перезагрузки/перекомпиляции на лету.
_NN_
_NN_
25.06.2013 04:31
Здравствуйте, Mamut, Вы писали:

_NN>>Приветствуется конструктивная критика.

_NN>>Предлагайте как улучшить.

M>Вынести в отдельные текстовые файлы. С возможности перезагрузки/перекомпиляции на лету.


Можно подробней ?
Каким образом это поможет "отдать дизайнеру" ?
Mamut
Mamut
25.06.2013 04:49
M>>Вынести в отдельные текстовые файлы. С возможности перезагрузки/перекомпиляции на лету.

_NN>Можно подробней ?

_NN>Каким образом это поможет "отдать дизайнеру" ?

Имел в виду верстальщику, скорее, чем дизайнеру.

В частности, поможет тем, что не надо будет смотреть на абсолютно ненужный ему код на Nemerle, и не надо будет знать абсолютно ненужные ему вещи типа «скомпиль и задеплой на сервер»
_NN_
_NN_
25.06.2013 05:13
Здравствуйте, Mamut, Вы писали:

M>>>Вынести в отдельные текстовые файлы. С возможности перезагрузки/перекомпиляции на лету.


_NN>>Можно подробней ?

_NN>>Каким образом это поможет "отдать дизайнеру" ?

M>Имел в виду верстальщику, скорее, чем дизайнеру.


M>В частности, поможет тем, что не надо будет смотреть на абсолютно ненужный ему код на Nemerle, и не надо будет знать абсолютно ненужные ему вещи типа «скомпиль и задеплой на сервер»

Примеры в студию.
Где тогда писать этот "ненужный код" ?

Автоматической компиляции с изменениями добиться можно относительно просто EasyMVC .
Но без деплоя на сервер как это должно работать ?

Как я понимаю будет просто текстовой файл, его заливаем на сервер и вуаля все работает ?
Ну так сервер тогда может и компилировать его .
Получаем что достаточно иметь возможность автоматической перекомпиляции на сервере.
Я правильно понииаю ?
Mamut
Mamut
25.06.2013 05:47
M>>В частности, поможет тем, что не надо будет смотреть на абсолютно ненужный ему код на Nemerle, и не надо будет знать абсолютно ненужные ему вещи типа «скомпиль и задеплой на сервер»
_NN>Примеры в студию.
_NN>Где тогда писать этот "ненужный код" ?

О боже. Любой шаблонный движок в руки.

https://docs.djangoproject.com/en/dev/ref/templates/
http://mustache.github.io
http://www.stringtemplate.org
http://www.smarty.net

да и вообще: http://en.wikipedia.org/wiki/Template_engine_(web)#Comparison


_NN>Автоматической компиляции с изменениями добиться можно относительно просто EasyMVC .


Этим же не верстальщик должен заниматься

_NN>Но без деплоя на сервер как это должно работать ?


С точки зрения верстальщика (да и любого человека, занимающегося сайтом) это должно выглядеть так:
— запустил сервер локально
— изменил шаблон, сохранил
— нажал F5 в браузере — изменения появились.


_NN>Как я понимаю будет просто текстовой файл, его заливаем на сервер и вуаля все работает ?


Да.

_NN>Ну так сервер тогда может и компилировать его .

_NN>Получаем что достаточно иметь возможность автоматической перекомпиляции на сервере.
_NN>Я правильно понииаю ?

Да

_NN>Предлагайте как улучшить.

Вынести в отдельные текстовые файлы. С возможностью перезагрузки/перекомпиляции на лету.


Вообще, шаблонизаторами вы далеко не первые занимаетесь (и далеко не последние). Можно посмотреть, как, что и почему сделано у других.

Например: Помимо выноса шаблона из кода, можно избавиться от метода View(), а подцеплять шаблоны по принципу convention over configuration: класс A метод B автоматом цепляет шаблон a_b_template и т.п. На этой основе можно делать интересные вещи типа lookup hierarchy (http://zotonic.com/docs/0.9/manuals/templates/lookups.html).

Ну или посмотреть на подход Lift: http://demo.liftweb.net/templating/
matumba
matumba
26.06.2013 04:51
Здравствуйте, Mamut, Вы писали:

M> public View() : string

M> {
M> <#
M> <div class="page">

M>Дизайнеру не отдать, без перекомпиляции не изменить


Я согласен с Мамутом, что бы это ни было (никто тут объяснять технические термины доступно не умеет), если на выходе это будет HTML, это ОБЯЗАН делать хтмл-верстальщик. Своим любимым инструментом, в котором синтаксис движка не интерферирует с синтаксисом HTML. В идеале — исполняемый код держать в спец-комментах <!--{ ... }--> , а подстановку переменных — видимой, типа <div>[$myvar]</div>
Если бóльшую часть логики вынести во всякие функции, на долю шаблона придутся совсем небольшие проверки типа <!--{ if (ShowDetails(currUser)) }--> ...
Хотя... может я не уловил суть спора?