<%= _.isUndefined(i18n['Select email sequence']) ? 'Select email sequence' : i18n['Select email sequence'] %> <% var categoriesMap = {}; var uncategorized = []; sequencesModels.each(function(model) { var categoryId = model.get('category_id'); if (categoryId) { if (!categoriesMap[categoryId]) { categoriesMap[categoryId] = { id: categoryId, // ✅ store category id name: model.get('category_label') || '', items: [] }; } categoriesMap[categoryId].items.push(model); } else { uncategorized.push(model); } }); // Sort uncategorized items alphabetically uncategorized.sort(function(a, b) { return a.get('sequence_name').localeCompare(b.get('sequence_name')); }); // Render uncategorized items first uncategorized.forEach(function(model) { %> <%= model.get('sequence_name') %> <% }); // Sort categories alphabetically by name var sortedCategoryIds = Object.keys(categoriesMap).sort(function(a, b) { return categoriesMap[a].name.localeCompare(categoriesMap[b].name); }); // Render categories and items sortedCategoryIds.forEach(function(catId) { var cat = categoriesMap[catId]; cat.items.sort(function(a, b) { return a.get('sequence_name').localeCompare(b.get('sequence_name')); }); %> <% cat.items.forEach(function(model) { %> <%= model.get('sequence_name') %> <% }); %> <% }); %>
<%= _.isUndefined(i18n['Select sequence category']) ? 'Select sequence category' : i18n['Select sequence category'] %> <% _.each(sequencesModels.sequenceCategories, function(category, id){ %> <%= category['category_label'] %> <% })%> <%= _.isUndefined(i18n['Add/edit category']) ? 'Add/edit category' : i18n['Add/edit category'] %>