Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2015, 19:44   #1
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
Вопрос Отрендерить матрицу объектов в html таблицу

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

Есть входная матрица:
Код:
var data = [[
    {"value": "1"},
    {"value": "2"},
    {"value": "2"},
    {"value": "4"}
], [
    {"value": "1"},
    {"value": "2"},
    {"value": "2"},
    {"value": "4"}
], [
    {"value": "1"},
    {"value": "3"},
    {"value": "3"},
    {"value": "5"}
]];
Визуально она представлена так:


Банальный рендеринг матрицы в такую html-таблицу:
Код:
var data = [[
    {"value": "1"}, {"value": "1"}, {"value": "1"}
], [
    {"value": "2"}, {"value": "2"}, {"value": "3"}
], [
    {"value": "2"}, {"value": "2"}, {"value": "3"}
], [
    {"value": "4"}, {"value": "4"}, {"value": "5"}
]];

function renderCombinedTable(data) {
    // TODO : realize
}

function renderSeparatedTable(data) {
    var xTable = document.createElement("table");
    for (var i = 0, ii = data.length; i < ii; i++) {
        xTable.appendChild(xTRs = document.createElement("tr"));
        for (var j = 0, jj = data[i].length; j < jj; j++) {
            var xTD = document.createElement("td");
            xTD.appendChild(document.createTextNode(data[i][j].value));
            xTRs.appendChild(xTD);
        }
    }
    return xTable;
}

document.body.appendChild(renderSeparatedTable(data));
Но на выходе хотелось бы объединить смежные одинаковые ячейки, что бы получилось что-то похожее на:


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

Дубликат вопроса создан на stackoverfow
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Старый 17.06.2015, 21:48   #2
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

а что делать с такого рода матрицей:
Код:
1  2  3
2  2  3
2  3  3
?
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 17.06.2015, 22:43   #3
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Цитата:
Сообщение от MadReason Посмотреть сообщение
буду признателен за любую помощь
моя помощь будет заключаться в том, чтобы рекомендовать тебе этого
Цитата:
Сообщение от MadReason Посмотреть сообщение
на выходе хотелось бы объединить смежные одинаковые ячейки
не делать

еще когда под эксель на vba писал, запомнил: "объединенные ячейки зло"

1. твоя первая проблема будет заключаться в том, как их правильно объединить и что такое правильно
2. вторая: получить правильную матрицу с таблицы

и еще +/- миллион с ними связанных =)
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 18.06.2015, 11:20   #4
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

Цитата:
Сообщение от Naive Посмотреть сообщение
а что делать с такого рода матрицей:
Код:
1  2  3
2  2  3
2  3  3
?
Объединяемые объекты гарантированно всегда n x m (треугольных и прочих форм не появится).

Цитата:
Сообщение от nerv
не делать
Если бы было все так просто. Это является подзадачей для непрерывного вывода огромной таблицы. то есть рисуется только видимая часть.
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Старый 18.06.2015, 12:25   #5
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

http://jsfiddle.net/p23smm7s/
как-то так. Тут стоит подумать насчет размеров, ячейки имеют свойство схлапываться, например если взять твой дата, то схлопнутся две строки с 2 и 3 ячейками и первый со вторым столбцы.

можно пронумеровать сперва таблицу по размерам, как в экселе
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 18.06.2015, 15:03   #6
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

Naive, огромное спасибо за решение.
Нашел для себя оптимальный выход через построение индекса, наверное, так будет производительнее всего...
http://jsfiddle.net/madreason/bfp8erdt/3/
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Старый 18.06.2015, 16:07   #7
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

ИМХО, не очень удачное решение задавать размеры... я бы помыслил в эту сторону:
http://jsfiddle.net/p23smm7s/3/
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 19.06.2015, 11:20   #8
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

Цитата:
Сообщение от Naive Посмотреть сообщение
ИМХО, не очень удачное решение задавать размеры...
У меня layout таков, что я все равно высчитываю и задаю всем элементам размеры самостоятельно. скорее всего из меня некудышный верстальщик, но лучшей реализации я не придумал) возможно в этом и проблема, на выходных постараюсь разъяснить и создать обсуждение, буду очень признателен советам.
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Старый 19.06.2015, 13:25   #9
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Дело в том, что по большому счету таблице абсолютно насрать какие там размеры ты понаставил, она всеравно самоотрендерится в зависимости от контента.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить фрейм в таблицу html! mr.bilochka HTML и CSS 4 18.04.2013 15:39
Как вставить изображение в html-таблицу ziganurov2011 HTML и CSS 2 20.11.2011 12:35
Написать программу на HTML и JavaScript с использованием объектов Array, Date и String. Marika lady Помощь студентам 2 12.10.2011 19:03
как найти нужную таблицу в HTML коде saydash Работа с сетью в Delphi 2 03.06.2011 09:21
Читать фаил и регистрировать данные в таблицу или матрицу ciaonataha Общие вопросы C/C++ 3 26.03.2009 10:59