AgelxNash/DocLister

Номер итерации и номер документа

Closed this issue · 5 comments

В контроллерах site_content, shopkeeper и onetable начальный номер итерации задается как $i = 1
site_content
onetable
shopkeeper

Затем этот номер передается в uniformPrepare
site_content
onetable
shopkeeper

Но в самом uniformPrepare i по дефолту установлено в 0

У меня создалось ощущение, что предусматривалась возможность создания своих контроллеров, где итерация будет начинаться с 0, а не с 1.

На эту мысль меня также наводит тот факт, что в этой строке 0 считается нечетным, то есть как бы 1-м документом в списке.

Но если это так, тогда этому противоречит эта строка, где жестко записано, что 1-й элемент - это элемент с номером итерации 1.

Отсюда идет неверное определение шаблонов tplOdd и tplEven в DocLister, а также путаница с первым tplIdN (0 или 1). В доках эти шаблоны начинаются с tplId0, в реальности во всех контроллерах с tplId1.

Если я неправ в своем предположении, что предусматривалась возможность начинать нумерацию док-тов (и соотв. шаблонов) с 0, и начальное $i всегда будет 1, то достаточно просто исправить эту строку, поменяв == 0 на == 1.

Если же прав, то, возможно, нужно разделить понятия "номер итерации" ($i) и "номер документа" (пусть будет $num), итерация будет с 0, а номер так, как задано - с 0 или с 1. И соответственно добавить функции uniformPrepare аргумент $start (откуда стартует номер док-та - с 0 или 1).

Если я неправ в своем предположении, что предусматривалась возможность начинать нумерацию док-тов (и соотв. шаблонов) с 0, и начальное $i всегда будет 1, то достаточно просто исправить эту строку, поменяв == 0 на == 1.

Это исправление позволяет правильно определить четность итерации: если остаток от деления на 2 равен 1, то нечетная (odd), иначе - четная (even).

Нужно исправить в контроллерах начальное значение $i на 0, в dl.iteration записывать $i+1, на четность проверять $i + 1. Тогда по идее все будет работать, как задумывалось.

Но раз tplId0 никто не использует из-за этой путаницы с $i, то может и не нужно ничего исправлять (кроме определения четности и документации)?

Я использую, вот в чем дело-то :) а ваши исправления на первый взгляд правильные, если исправите - я ПР в доки закину.

@Pathologic по данному тикету вопрос решен? Или планируешь переделать как и предложил?

В общем-то, раз @Aharito убрал из документации tplId0, то и переделывать нечего, разве что можно убрать из комментариев пояснение, что нумерация начинается с нуля.