module IHP.IDE.SchemaDesigner.View.EnumValues.Edit where import IHP.ViewPrelude import IHP.IDE.SchemaDesigner.Types import IHP.IDE.ToolServer.Types import IHP.IDE.SchemaDesigner.View.Layout data EditEnumValueView = EditEnumValueView { EditEnumValueView -> [Statement] statements :: [Statement] , EditEnumValueView -> Text enumName :: Text , EditEnumValueView -> Int valueId :: Int , EditEnumValueView -> Text value :: Text } instance View EditEnumValueView where html :: (?context::ControllerContext, ?view::EditEnumValueView) => EditEnumValueView -> Html html EditEnumValueView { Int [Statement] Text $sel:statements:EditEnumValueView :: EditEnumValueView -> [Statement] $sel:enumName:EditEnumValueView :: EditEnumValueView -> Text $sel:valueId:EditEnumValueView :: EditEnumValueView -> Int $sel:value:EditEnumValueView :: EditEnumValueView -> Text statements :: [Statement] enumName :: Text valueId :: Int value :: 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 enum :: Maybe Statement enum = 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 enum modalContent :: Html modalContent = [hsx| <form method="POST" action={UpdateEnumValueAction}> <input type="hidden" name="enumName" value={enumName}/> <input type="hidden" name="valueId" value={tshow valueId}/> <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" value={value}/> </div> </div> <div class="text-right"> <button type="submit" class="btn btn-primary">Edit Enum Value</button> </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 "Edit 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 }