diff --git a/src/main/resources/templates/fragment/head.html b/src/main/resources/templates/fragment/head.html
index fd0f5f4..600ff0b 100644
--- a/src/main/resources/templates/fragment/head.html
+++ b/src/main/resources/templates/fragment/head.html
@@ -10,7 +10,7 @@
-
개발자 포털
+ API Simulator
diff --git a/src/main/resources/templates/page/routes/mockRouteEdit.html b/src/main/resources/templates/page/routes/mockRouteEdit.html
index 25aaaca..8995872 100644
--- a/src/main/resources/templates/page/routes/mockRouteEdit.html
+++ b/src/main/resources/templates/page/routes/mockRouteEdit.html
@@ -232,23 +232,23 @@
$('#responseTabContent').on('click', 'button', function () {
if ($(this).hasClass('btn_remove_case')) {
- controller.removeResponse($(this).attr("data-id"));
+ controller.removeResponse($(this).data("id"));
}
if ($(this).hasClass('btn_add_condition')) {
- controller.addResponseCondition($(this).attr("data-id"));
+ controller.addResponseCondition($(this).data("id"));
}
if ($(this).hasClass('btn_add_header')) {
- controller.addResponseHeader($(this).attr("data-id"));
+ controller.addResponseHeader($(this).data("id"));
}
if ($(this).hasClass('btn_remove_condition')) {
- controller.removeResponseCondition($(this).attr("data-id"), $(this).attr("data-row"));
+ controller.removeResponseCondition($(this).data("id"), $(this).data("row"));
}
if ($(this).hasClass('btn_remove_header')) {
- controller.removeResponseHeader($(this).attr("data-id"), $(this).attr("data-row"));
+ controller.removeResponseHeader($(this).data("id"), $(this).data("row"));
}
});
@@ -281,18 +281,134 @@
};
response.headers.push(header);
});
- console.log(model);
});
$('#responses').empty();
this.render();
},
- render: function () {
+ renderCondition: function(i) {
+
+ $('#response_tab_' + i).find('.response_conditions').empty();
+ let conditions = $('#response_tab_' + i).find('.response_conditions');
+
+ for (let c = 0; c < model.responses[i].conditions.length; c++) {
+ let conditionTemplate = $('#conditionTemplate').children().find('tr').clone();
+ conditionTemplate.find('select').attr('name', 'responses[' + i + '].conditions[' + c + '].type');
+ conditionTemplate.find('input[name="key"]').attr('name', 'responses[' + i + '].conditions[' + c + '].key');
+ conditionTemplate.find('input[name="value"]').attr('name', 'responses[' + i + '].conditions[' + c + '].value');
+ conditionTemplate.find('button').attr("data-id", i);
+ conditionTemplate.find('button').attr("data-row", c);
+
+ conditionTemplate.find('select').val(model.responses[i].conditions[c].type);
+ conditionTemplate.find('input[name="responses[' + i + '].conditions[' + c + '].key"]').val(model.responses[i].conditions[c].key);
+ conditionTemplate.find('input[name="responses[' + i + '].conditions[' + c + '].value"]').val(model.responses[i].conditions[c].value);
+
+ conditionTemplate.find('select').on('change', function () {
+ model.responses[i].conditions[c].type = $(this).val();
+ });
+
+ conditionTemplate.find('input[name="responses[' + i + '].conditions[' + c + '].key"]').on('input', function () {
+ model.responses[i].conditions[c].key = $(this).val();
+ });
+
+ conditionTemplate.find('input[name="responses[' + i + '].conditions[' + c + '].value"]').on('input', function () {
+ model.responses[i].conditions[c].value = $(this).val();
+ });
+
+ $(conditions).append(conditionTemplate);
+ }
+ },
+ renderHeaders(i){
+
+ $('#response_tab_' + i).find('.response_headers').empty();
+ let headers = $('#response_tab_' + i).find('.response_headers');
+
+ for (let j = 0; j < model.responses[i].headers.length; j++) {
+ let headerTemplate = $('#responseHeaderTemplate').children().find('tr').clone();
+ headerTemplate.find('input[name="key"]').attr('name', 'responses[' + i + '].headers[' + j + '].key');
+ headerTemplate.find('input[name="value"]').attr('name', 'responses[' + i + '].headers[' + j + '].value');
+ headerTemplate.find('button').attr("data-id", i);
+ headerTemplate.find('button').attr("data-row", j);
+
+ headerTemplate.find('input[name="responses[' + i + '].headers[' + j + '].key"]').val(model.responses[i].headers[j].key);
+ headerTemplate.find('input[name="responses[' + i + '].headers[' + j + '].value"]').val(model.responses[i].headers[j].value);
+
+ headerTemplate.find('input[name="responses[' + i + '].headers[' + j + '].key"]').on('input', function () {
+ model.responses[i].headers[j].key = $(this).val();
+ });
+
+ headerTemplate.find('input[name="responses[' + i + '].headers[' + j + '].value"]').on('input', function () {
+ model.responses[i].headers[j].value = $(this).val();
+ });
+
+ $(headers).append(headerTemplate);
+ }
+ },
+ renderResponse(i){
+
+ this.renderResponseTabTitle();
+ let nodeCopy = $('#template').children().clone();
+
+ nodeCopy.attr('id', 'response_tab_' + i);
+ nodeCopy.attr('aria-labelledby', 'response_tab_' + i);
+ nodeCopy.attr('tabindex', i);
+
+ console.log(model.responses[i]);
+ nodeCopy.attr('class', 'tab-pane fade ' + (model.responses[i].defaultResponse? 'show active' : ''));
+ if (model.responses[i].defaultResponse) {
+ nodeCopy.find('.condition_name').text('기본 응답');
+ nodeCopy.find('.condition').attr('class', 'condition')
+ nodeCopy.find('.condition').attr('style', 'display: none;')
+ }else {
+ nodeCopy.find('.condition_name').text('조건 ' + (i + 1));
+ }
+ nodeCopy.find('.btn_remove_case').attr("data-id", i);
+ nodeCopy.find('.btn_add_condition').attr("data-id", i);
+ nodeCopy.find('.btn_add_header').attr("data-id", i);
+ nodeCopy.find('input[name="statusCode"]').attr('name', 'responses[' + i + '].statusCode');
+ nodeCopy.find('input[name="defaultResponse"]').attr('name', 'responses[' + i + '].defaultResponse');
+ nodeCopy.find('input[name="delay"]').attr('name', 'responses[' + i + '].delay');
+ nodeCopy.find('textarea[name="body"]').attr('name', 'responses[' + i + '].body');
+
+ nodeCopy.find('input[name="responses[' + i + '].statusCode"]').val(model.responses[i].statusCode);
+ nodeCopy.find('input[name="responses[' + i + '].defaultResponse"]').val(model.responses[i].defaultResponse);
+ nodeCopy.find('input[name="responses[' + i + '].delay"]').val(model.responses[i].delay);
+
+ let me = this;
+
+ require(['vs/editor/editor.main'], function () {
+ let editor = monaco.editor.create(nodeCopy.find(".response_body")[0], {
+ value: model.responses[i].body,
+ theme: 'vs-light',
+ automaticLayout: true
+ });
+
+ editor.onDidChangeModelContent(function (e) {
+ model.responses[i].body = editor.getValue();
+ nodeCopy.find('textarea[name="responses[' + i + '].body"]').val(editor.getValue());
+ });
+
+ me.responseEditors.push(editor);
+ });
+
+ nodeCopy.find('textarea[name="responses[' + i + '].body"]').val(model.responses[i].body);
+ nodeCopy.find('input[name="responses[' + i + '].statusCode"]').on('input', function () {
+ model.responses[i].statusCode = $(this).val();
+ });
+
+ nodeCopy.find('input[name="responses[' + i + '].delay"]').on('input', function () {
+ model.responses[i].delay = $(this).val();
+ });
+
+ $('#responseTabContent').append(nodeCopy);
+ if(view.currentIdx >= model.responses.length){
+ view.currentIdx = model.responses.length - 1;
+ }
+ $('#responseTabTitle li:eq(' + view.currentIdx + ') a').tab('show');
+
+ },
+ renderResponseTabTitle(){
$('#responseTabTitle').empty();
- $('#responseTabContent').empty();
-
for (let i = 0; i < model.responses.length; i++) {
- let nodeCopy = $('#template').children().clone();
-
let tabButton = $('').attr('class', 'nav-link'+ (model.responses[i].defaultResponse? ' active' : ''))
.attr('data-bs-toggle', 'tab')
.attr('type', 'button')
@@ -303,113 +419,11 @@
.text(model.responses[i].defaultResponse?'기본 응답':('조건 ' + i));
let li = $('').attr('class', 'nav-item')
- .attr('role','presentation')
- .append(tabButton);
+ .attr('role','presentation')
+ .append(tabButton);
$('#responseTabTitle').append(li);
-
- nodeCopy.attr('id', 'response_tab_' + i);
- nodeCopy.attr('aria-labelledby', 'response_tab_' + i);
- nodeCopy.attr('tabindex', i);
- nodeCopy.attr('class', 'tab-pane fade ' + (model.responses[i].defaultResponse? 'show active' : ''));
- if (model.responses[i].defaultResponse) {
- nodeCopy.find('.condition_name').text('기본 응답');
- nodeCopy.find('.condition').attr('class', 'condition')
- nodeCopy.find('.condition').attr('style', 'display: none;')
- }else {
- nodeCopy.find('.condition_name').text('조건 ' + (i + 1));
- }
- nodeCopy.find('.btn_remove_case').attr("data-id", i);
- nodeCopy.find('.btn_add_condition').attr("data-id", i);
- nodeCopy.find('.btn_add_header').attr("data-id", i);
- nodeCopy.find('input[name="statusCode"]').attr('name', 'responses[' + i + '].statusCode');
- nodeCopy.find('input[name="defaultResponse"]').attr('name', 'responses[' + i + '].defaultResponse');
- nodeCopy.find('input[name="delay"]').attr('name', 'responses[' + i + '].delay');
- nodeCopy.find('textarea[name="body"]').attr('name', 'responses[' + i + '].body');
-
- nodeCopy.find('input[name="responses[' + i + '].statusCode"]').val(model.responses[i].statusCode);
- nodeCopy.find('input[name="responses[' + i + '].defaultResponse"]').val(model.responses[i].defaultResponse);
- nodeCopy.find('input[name="responses[' + i + '].delay"]').val(model.responses[i].delay);
-
- let me = this;
-
- require(['vs/editor/editor.main'], function () {
- let editor = monaco.editor.create(nodeCopy.find(".response_body")[0], {
- value: model.responses[i].body,
- theme: 'vs-light',
- automaticLayout: true
- });
- me.responseEditors.push(editor);
- me.responseEditors[i].onDidChangeModelContent(function (e) {
- model.responses[i].body = me.responseEditors[i].getValue();
- nodeCopy.find('textarea[name="responses[' + i + '].body"]').val(model.responses[i].body);
- });
- });
-
- nodeCopy.find('textarea[name="responses[' + i + '].body"]').val(model.responses[i].body);
-
- nodeCopy.find('input[name="responses[' + i + '].statusCode"]').on('input', function () {
- model.responses[i].statusCode = $(this).val();
- });
-
- nodeCopy.find('input[name="responses[' + i + '].delay"]').on('input', function () {
- model.responses[i].delay = $(this).val();
- });
-
- let conditions = nodeCopy.find('.response_conditions');
-
- for (let c = 0; c < model.responses[i].conditions.length; c++) {
- let conditionTemplate = $('#conditionTemplate').children().find('tr').clone();
- conditionTemplate.find('select').attr('name', 'responses[' + i + '].conditions[' + c + '].type');
- conditionTemplate.find('input[name="key"]').attr('name', 'responses[' + i + '].conditions[' + c + '].key');
- conditionTemplate.find('input[name="value"]').attr('name', 'responses[' + i + '].conditions[' + c + '].value');
- conditionTemplate.find('button').attr("data-id", i);
- conditionTemplate.find('button').attr("data-row", c);
-
- conditionTemplate.find('select').val(model.responses[i].conditions[c].type);
- conditionTemplate.find('input[name="responses[' + i + '].conditions[' + c + '].key"]').val(model.responses[i].conditions[c].key);
- conditionTemplate.find('input[name="responses[' + i + '].conditions[' + c + '].value"]').val(model.responses[i].conditions[c].value);
-
- conditionTemplate.find('select').on('change', function () {
- model.responses[i].conditions[c].type = $(this).val();
- });
-
- conditionTemplate.find('input[name="responses[' + i + '].conditions[' + c + '].key"]').on('input', function () {
- model.responses[i].conditions[c].key = $(this).val();
- });
-
- conditionTemplate.find('input[name="responses[' + i + '].conditions[' + c + '].value"]').on('input', function () {
- model.responses[i].conditions[c].value = $(this).val();
- });
-
- $(conditions).append(conditionTemplate);
- }
-
- for (let j = 0; j < model.responses[i].headers.length; j++) {
- let headerTemplate = $('#responseHeaderTemplate').children().find('tr').clone();
- headerTemplate.find('input[name="key"]').attr('name', 'responses[' + i + '].headers[' + j + '].key');
- headerTemplate.find('input[name="value"]').attr('name', 'responses[' + i + '].headers[' + j + '].value');
- headerTemplate.find('button').attr("data-id", i);
- headerTemplate.find('button').attr("data-row", j);
-
- headerTemplate.find('input[name="responses[' + i + '].headers[' + j + '].key"]').val(model.responses[i].headers[j].key);
- headerTemplate.find('input[name="responses[' + i + '].headers[' + j + '].value"]').val(model.responses[i].headers[j].value);
-
- headerTemplate.find('input[name="responses[' + i + '].headers[' + j + '].key"]').on('input', function () {
- model.responses[i].headers[j].key = $(this).val();
- });
-
- headerTemplate.find('input[name="responses[' + i + '].headers[' + j + '].value"]').on('input', function () {
- model.responses[i].headers[j].value = $(this).val();
- });
-
- $(nodeCopy).find('.response_headers').append(headerTemplate);
- }
-
- $('#responseTabContent').append(nodeCopy);
-
}
-
let tabButton = $('