ihp-ide-1.4.0: IHP/IDE/Data/View/ShowDatabase.hs
module IHP.IDE.Data.View.ShowDatabase where
import IHP.ViewPrelude
import IHP.IDE.ToolServer.Types
import IHP.IDE.Data.View.Layout
data ShowDatabaseView = ShowDatabaseView {
tableNames :: [Text]
}
instance View ShowDatabaseView where
html ShowDatabaseView { .. } = [hsx|
<div class="h-100">
{headerNav}
<div class="h-100 row no-gutters" oncontextmenu="event.preventDefault();">
{renderTableSelector tableNames ""}
</div>
</div>
|]
renderTableSelector :: [Text] -> Text -> Html
renderTableSelector tableNames activeTableName = [hsx|
<div class="col-2 object-selector" oncontextmenu="event.preventDefault();">
<div class="d-flex">
<h5 class="pl-3">Tables</h5>
</div>
{forEach tableNames renderTable}
<div class="text-muted context-menu-notice">Right click to open context menu</div>
</div>
|]
where
renderTable :: Text -> Html
renderTable name = [hsx|
<a
href={ShowTableRowsAction name}
class={classes [("object object-table w-100 context-table pl-3", True), ("active", name == activeTableName)]}
oncontextmenu={"showContextMenu('" <> contextMenuId <> "'); event.stopPropagation();"}
>
{name}
</a>
<div class="custom-menu menu-for-table shadow backdrop-blur" id={contextMenuId}>
<a href={pathTo (ShowTableAction name)}>Show Schema</a>
<a
href={pathTo (DeleteTableRowsAction name)}
class="js-delete"
data-confirm={"Are you sure you want to delete all rows in '" <> name <> "' table?"}
>Delete All Rows</a>
</div>
|]
where
contextMenuId = "context-menu-table-" <> name