module IHP.IDE.SchemaDesigner.View.EnumValues.New where import IHP.ViewPrelude import IHP.IDE.SchemaDesigner.Types import IHP.IDE.ToolServer.Types import IHP.IDE.SchemaDesigner.View.Layout data NewEnumValueView = NewEnumValueView { NewEnumValueView -> [Statement] statements :: [Statement] , NewEnumValueView -> Text enumName :: Text } instance View NewEnumValueView where html :: (?context::ControllerContext, ?view::NewEnumValueView) => NewEnumValueView -> Html html NewEnumValueView { [Statement] Text $sel:statements:NewEnumValueView :: NewEnumValueView -> [Statement] $sel:enumName:NewEnumValueView :: NewEnumValueView -> Text statements :: [Statement] enumName :: Text .. } = [hsx| <div class="row no-gutters bg-white" id="schema-designer-viewer"> {renderObjectSelector (zip [0..] statements) (Just enumName)} {renderEnumSelector enumName (zip [0..] values)} </div> {migrationStatus} {renderModal modal} |] where table :: Maybe Statement table = Text -> [Statement] -> Maybe Statement forall {t :: * -> *}. Foldable t => Text -> t Statement -> Maybe Statement findStatementByName Text enumName [Statement] statements values :: [Text] values = [Text] -> (Statement -> [Text]) -> Maybe Statement -> [Text] forall b a. b -> (a -> b) -> Maybe a -> b maybe [] (.values) Maybe Statement table modalContent :: Html modalContent = [hsx| <form method="POST" action={CreateEnumValueAction}> <input type="hidden" name="enumName" value={enumName}/> <div class="form-group row"> <label class="col-sm-2 col-form-label">Name:</label> <div class="col-sm-10"> <input name="enumValueName" type="text" class="form-control" autofocus="autofocus"/> <div class="invalid-feedback">It's highly recommended to use snake case / underscores for naming your enum values</div> <small class="text-muted"> Use underscores instead of camel case. E.g.: <code>public_user</code>, <code>in_progress</code>, <code>currency_eur</code> </small> </div> </div> <div class="text-right"> <input type="submit" name="submit" value="Save" class="btn btn-secondary mr-2"> <input type="submit" name="submit" value="Save & Add Another" class="btn btn-primary"> </div> </form> |] modalFooter :: Maybe Html modalFooter = Maybe Html forall a. Monoid a => a mempty modalCloseUrl :: Text modalCloseUrl = EnumsController -> Text forall controller. HasPath controller => controller -> Text pathTo ShowEnumAction { Text enumName :: Text $sel:enumName:ShowEnumAction :: Text enumName } modalTitle :: Text modalTitle = Text "New Enum Value" modal :: Modal modal = Modal { Html modalContent :: Html $sel:modalContent:Modal :: Html modalContent, Maybe Html modalFooter :: Maybe Html $sel:modalFooter:Modal :: Maybe Html modalFooter, Text modalCloseUrl :: Text $sel:modalCloseUrl:Modal :: Text modalCloseUrl, Text modalTitle :: Text $sel:modalTitle:Modal :: Text modalTitle }