All Downloads are FREE. Search and download functionalities are using the official Maven repository.

skinny.task.generator.ScaffoldSspGenerator.scala Maven / Gradle / Ivy

There is a newer version: 3.1.0
Show newest version
package skinny.task.generator

import skinny.controller.Params

/**
 * Scaffold generator with ssp template.
 */
object ScaffoldSspGenerator extends ScaffoldSspGenerator

/**
 * Scaffold generator with ssp template.
 */
trait ScaffoldSspGenerator extends ScaffoldGenerator {

  val packageImportsWarning =
    s"""<%-- Be aware of package imports.
        | 1. ${sourceDir}/templates/ScalatePackage.scala
        | 2. scalateTemplateConfig in project/Build.scala
        |--%>""".stripMargin

  override def formHtmlCode(namespaces: Seq[String], resources: String, resource: String, nameAndTypeNamePairs: Seq[(String, String)]): String = {
    val controllerName = "Controllers." + toControllerName(namespaces, resources)
    "<%@val s: skinny.Skinny %>\n<%@val keyAndErrorMessages: skinny.KeyAndErrorMessages %>\n\n" +
      packageImportsWarning + "\n\n" +
      nameAndTypeNamePairs.toList.map { case (k, t) => (k, extractTypeIfOptionOrSeq(t)) }.map {
        case (name, "Boolean") =>
          s"""
| |
|
| |
|
|
|""".stripMargin case (name, "DateTime") => s"""
| |
|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| #if (keyAndErrorMessages.hasErrors("${toSnakeCase(name)}")) |
| #for (error <- keyAndErrorMessages.getErrors("${toSnakeCase(name)}")) | | #end |
| #end |
|
|""".stripMargin case (name, "LocalDate") => s"""
| |
|
|
| |
|
| |
|
| |
|
| #if (keyAndErrorMessages.hasErrors("${toSnakeCase(name)}")) |
| #for (error <- keyAndErrorMessages.getErrors("${toSnakeCase(name)}")) | | #end |
| #end |
|
|""".stripMargin case (name, "LocalTime") => s"""
| |
|
|
| |
|
| |
|
| |
|
| #if (keyAndErrorMessages.hasErrors("${toSnakeCase(name)}")) |
| #for (error <- keyAndErrorMessages.getErrors("${toSnakeCase(name)}")) | | #end |
| #end |
|
|""".stripMargin case (name, _) => s"""
| |
|
|
| |
|
| #if (keyAndErrorMessages.hasErrors("${toSnakeCase(name)}")) |
| #for (error <- keyAndErrorMessages.getErrors("${toSnakeCase(name)}")) | | #end |
| #end |
|
|""".stripMargin }.mkString + s"""
| $${unescape(s.csrfHiddenInputTag)} | | $${s.i18n.getOrKey("cancel")} |
|""".stripMargin } override def newHtmlCode(namespaces: Seq[String], resources: String, resource: String, nameAndTypeNamePairs: Seq[(String, String)]): String = { val controllerName = "Controllers." + toControllerName(namespaces, resources) s"""<%@val s: skinny.Skinny %> | |${packageImportsWarning} | |

$${s.i18n.getOrKey("${resource}.new")}

|
| |<%-- |#for (e <- s.errorMessages) |

$${e}

|#end |--%> | |
| $${include("_form.html.ssp")} |
|""".stripMargin } override def editHtmlCode(namespaces: Seq[String], resources: String, resource: String, nameAndTypeNamePairs: Seq[(String, String)]): String = { val controllerName = "Controllers." + toControllerName(namespaces, resources) s"""<%@val s: skinny.Skinny %> | |${packageImportsWarning} | |

$${s.i18n.getOrKey("${resource}.edit")} : #$${s.params.id}

|
| |<%-- |#for (e <- s.errorMessages) |

$${e}

|#end |--%> | |
s.params.${snakeCasedPrimaryKeyName})}" class="form"> | $${include("_form.html.ssp")} |
|""".stripMargin } override def indexHtmlCode(namespaces: Seq[String], resources: String, resource: String, nameAndTypeNamePairs: Seq[(String, String)]): String = { val controllerName = "Controllers." + toControllerName(namespaces, resources) val modelClassName = toClassName(resource) s"""<%@val s: skinny.Skinny %> |<%@val items: Seq[${toNamespace(modelPackage, namespaces)}.${modelClassName}] %> |<%@val totalPages: Int %> |<%@val page: Int = s.params.page.map(_.toString.toInt).getOrElse(1) %> | |${packageImportsWarning} | |

$${s.i18n.getOrKey("${resource}.list")}

|
|#for (notice <- s.flash.notice) |

$${notice}

|#end | |#if (totalPages > 1) |
    |
  • | 1)}">« |
  • | <% val maxPage = Math.min(totalPages, if (page <= 5) 11 else page + 5) %> | #for (i <- Math.max(1, maxPage - 10) to maxPage) |
  • | i)}">$${i} |
  • | #end |
  • | totalPages)}">» |
  • |
  • | $${Math.min(page, totalPages)} / $${totalPages} |
  • |
|#end | | | | |${((primaryKeyName -> "Long") :: nameAndTypeNamePairs.toList).map { case (k, _) => " " }.mkString("\n")} | | | | | #for (item <- items) | |${((primaryKeyName -> "Long") :: nameAndTypeNamePairs.toList).map { case (k, _) => s" " }.mkString("\n")} | | | #end | #if (items.isEmpty) | | | | #end | |
${s.i18n.getOrKey(\"" + resource + "." + k + "\")}
$${item.${k}} | item.${primaryKeyName})}" class="btn btn-default">$${s.i18n.getOrKey("detail")} | item.${primaryKeyName})}" class="btn btn-info">$${s.i18n.getOrKey("edit")} | item.${primaryKeyName})}" rel="nofollow" class="btn btn-danger">$${s.i18n.getOrKey("delete")} |
$${s.i18n.getOrKey("empty")}
| |$${s.i18n.getOrKey("new")} |""".stripMargin } override def showHtmlCode(namespaces: Seq[String], resources: String, resource: String, nameAndTypeNamePairs: Seq[(String, String)]): String = { val controllerName = "Controllers." + toControllerName(namespaces, resources) val modelClassName = toClassName(resource) val modelNamespace = toNamespace(modelPackage, namespaces) val attributesPart = ((primaryKeyName -> "Long") :: nameAndTypeNamePairs.toList).map { case (name, _) => s""" | $${s.i18n.getOrKey("${resource}.${name}")} | $${item.${name}} | |""".stripMargin }.mkString s"""<%@val item: ${modelNamespace}.${modelClassName} %> |<%@val s: skinny.Skinny %> | |${packageImportsWarning} | |

$${s.i18n.getOrKey("${resource}.detail")}

|
|#for (notice <- s.flash.notice) |

$${notice}

|#end | | |${attributesPart} | |
| |
| |""".stripMargin } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy