server/java/renkan-web/src/main/webapp/WEB-INF/templates/fragment/spaceForm.html
author ymh <ymh.work@gmail.com>
Sun, 14 Jul 2024 22:00:08 +0200
changeset 666 9d6550026232
parent 316 242510015401
permissions -rw-r--r--
Added tag V00.13.04 for changeset 69d13e7dd286

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" th:lang="${#ctx.getLocale().toLanguageTag()}" >
  <head>
    <meta charset="utf-8"/>
    <title>Space form</title>
  </head>
<body>
<div id="spaceForm" th:fragment="spaceFormFragment" >
  <script type="text/javascript" th:inline="javascript">
    //<![CDATA[

        function spaceFormSubmit() {
            return true;
            var errors = {};
            var valid = true;

            if(!$('#title').val()) {
                errors['title'] = /*[[#{renkan.error.title.empty}]]*/"renkan.error.title.empty";
                valid = false;
            }
            
            if($('#binConfig').val()) {

                var editor = ace.edit("binConfigDiv");
                var annotations = editor.getSession().getAnnotations();
                if(annotations.length>0) {
                    var error_message = /*[[#{renkan.error.bin_config.json}]]*/"renkan.error.bin_config.json";
                    errors['binConfigDiv'] = error_message + ". "+ annotations[0].type + ": (" +(annotations[0].row+1)+","+annotations[0].column+") " + annotations[0].text; 
                    valid = false;
                }
            }
            
            showformErrors(errors);

            return valid;
        }


        function _setBinConfigStatus(editor) {
            var annotations = editor.getSession().getAnnotations();
            if(annotations.length>0) {
                $('.binConfigButton').attr("disabled", "disabled");
            }
            else {
                $('.binConfigButton').removeAttr("disabled");
            }
        }

        $(function(){
            var tabSize = 2;
            var editor = ace.edit("binConfigDiv");
            editor.setTheme("ace/theme/xcode");
            editor.getSession().setMode("ace/mode/json");
            editor.getSession().setTabSize(tabSize);
            editor.getSession().setUseSoftTabs(true);
            _setBinConfigStatus(editor);
            editor.getSession().on('change', function(e) {
                $('#binConfig').val(editor.getValue());
            });
            editor.getSession().on('changeAnnotation', function() {
                _setBinConfigStatus(editor);
            });

            $('#binConfigFormatButton').click(function(){
                var jsonText = editor.getValue();
                try {
                    editor.setValue(formatJson(jsonText, tabSize),0);
                    editor.moveCursorTo(0,0);
                    editor.clearSelection();
                } catch (e) {
                    //do nothing
                }
            });

            $('#binConfigCompactButton').click(function(){
                var jsonText = editor.getValue();
                try {
                    editor.setValue(compactJson(jsonText),0);
                    editor.moveCursorTo(0,0);
                    editor.clearSelection();
                } catch (e) {
                    //do nothing
                }
            });

            $('#color').spectrum({
                showInput: true,
                showAlpha: true,
                showPalette: true,
                showInitial: true
            });

            $("#model-form").submit(function(e) {
                return spaceFormSubmit();
            });

        });
    //]]>
  </script>
  <form action="#" th:object="${space}" th:action="@{/admin/spaces/save}" method="post" id="model-form">
     <fieldset class="form-fields">
       <input type="hidden" th:field="*{id}" th:if="*{id}" />
       <input type="hidden" th:field="*{binConfig}"/>
       <div>
         <label for="title" th:text="#{renkanAdmin.form.title}">Title: </label> 
         <input type="text" th:field="*{title}" />
         <div th:if="${#fields.hasErrors('title')}" th:errors="*{title}" class="form-error"></div>
       </div> 
       <div>
         <label for="uri" th:text="#{renkanAdmin.form.uri}">Uri: </label> 
         <input type="text" th:field="*{uri}" /> 
       </div> 
       <div>
         <label for="description" th:text="#{renkanAdmin.form.description}">Description: </label> 
         <textarea th:field="*{description}"></textarea> 
       </div> 
       <div>
         <label for="color" th:text="#{renkanAdmin.form.color}">Color: </label> 
         <input type="text" th:field="*{color}" /> 
       </div>
       <div>
         <label for="binConfigContainer" th:text="#{renkanAdmin.form.space.bin_config}">Bin config: </label>
         <div id="binConfigContainer">
           <div id="binConfigButtonsDiv"><button type="button" id="binConfigFormatButton" th:text="#{renkanAdmin.form.space.format}" class="binConfigButton">Format</button><button type="button" id="binConfigCompactButton" th:text="#{renkanAdmin.form.space.compact}" class="binConfigButton">Compact</button></div>
           <div id="binConfigDiv" th:text="*{binConfig}"></div>
         </div>
         <div th:if="${#fields.hasErrors('binConfig')}" th:errors="*{binConfig}" class="form-error"></div>
       </div> 

       <div class="submit"> 
         <button type="submit" name="save" th:text="#{renkanAdmin.form.space.submit}">Save</button>
         <!--button type="button" name="cancel" th:text="#{renkanAdmin.form.space.cancel}" th:onclick="location">Cancel</button-->
       </div> 
      
     </fieldset>  
  </form>
</div>
</body>
</html>