app/slices/FlexibleContainer.scala (33 lines of code) (raw):

package slices import com.gu.facia.client.models.CollectionConfigJson trait FlexibleContainer { def storiesVisible( stories: Seq[Story], collectionConfigJson: Option[CollectionConfigJson] ): Int } object FlexibleGeneral extends FlexibleContainer { def storiesVisible( stories: Seq[Story], collectionConfigJson: Option[CollectionConfigJson] ): Int = { val totalMaxItems = collectionConfigJson.get.groupsConfig .getOrElse(Nil) .flatMap(_.maxItems) .sum totalMaxItems } } object FlexibleSpecial extends FlexibleContainer { def storiesVisible( stories: Seq[Story], collectionConfigJson: Option[CollectionConfigJson] ): Int = { val byGroup = Story.segmentByGroup(stories) val snap = byGroup.getOrElse(3, Seq.empty) ++ byGroup.getOrElse(2, Seq.empty) ++ byGroup.getOrElse(1, Seq.empty) val standardCards = byGroup.getOrElse(0, Seq.empty) snap.size + (standardCards.size min 5) } }