diff --git a/web/index.js b/web/index.js index b5706d5..82692d9 100644 --- a/web/index.js +++ b/web/index.js @@ -8,31 +8,33 @@ const http = require('http'), router = express.Router(), server = http.createServer(app).listen(8080, () => { client.indices.get({ index: '_all' }).then(indices => { - if (indices.forms) { - client.indices.delete({ - index: 'forms' - }) - } - client.indices.create({ - index: 'forms', - body: { - mappings: { - form: { - properties: { - schema: { - type: 'object' - }, - options: { - type: 'object' - }, - data: { - type: 'object' + // client.indices.delete({ + // index: 'forms' + // }) + if (!indices.forms) { + client.indices.create({ + index: 'forms', + body: { + mappings: { + form: { + dynamic: true, + numeric_detection: true, + properties: { + schema: { + type: 'object' + }, + options: { + type: 'object' + }, + data: { + type: 'object' + } } } } } - } - }) + }) + } }) console.log(`Serving on ${server.address().address}:${server.address().port}`) }) @@ -65,7 +67,7 @@ router.get('/load/:id', (req, res, next) => { } }).then(form => { if (form.hits.hits.length > 0) { - res.json(form.hits.hits[0]) + res.json(form.hits.hits[0]._source) } else res.sendStatus(404) }) .catch(error => { @@ -96,8 +98,8 @@ router.get('/all', (req, res, next) => { type: 'form' }).then(forms => { if (forms.hits.hits.length > 0) { - res.json(forms.hits.hits[0]) - } else res.sendStatus(404) + res.json(forms.hits.hits) + } else res.json([]) }) .catch(next) }) \ No newline at end of file diff --git a/web/public/index.html b/web/public/index.html index ece256b..2e328f0 100644 --- a/web/public/index.html +++ b/web/public/index.html @@ -206,7 +206,10 @@

- +
+
+ + diff --git a/web/public/js/form-builder.js b/web/public/js/form-builder.js index d67a95e..2a73d98 100644 --- a/web/public/js/form-builder.js +++ b/web/public/js/form-builder.js @@ -1024,52 +1024,71 @@ var setup = function() // load button $(".load-button").off().click(function() { - if (!localStorage) - { - alert("Your browser must support HTML5 local storage in order to use this feature"); - return; - } + // if (!localStorage) + // { + // alert("Your browser must support HTML5 local storage in order to use this feature"); + // return; + // } - var configString = localStorage.getItem("alpacaDesignerConfig"); - if (!configString) - { - return; - } + // var configString = localStorage.getItem("alpacaDesignerConfig"); + // if (!configString) + // { + // return; + // } - try - { - var config = JSON.parse(configString); - if (!config.schema) { - config.schema = {}; + // try + // { + // var config = JSON.parse(configString); + // if (!config.schema) { + // config.schema = {}; + // } + // if (!config.options) { + // config.options = {}; + // } + // if (!config.data) { + // config.data = {}; + // } + var config = {}; + if (schema) + { + config.schema = schema; } - if (!config.options) { - config.options = {}; + if (options) + { + config.options = options; } - if (!config.data) { - config.data = {}; + if (data) + { + config.data = data; } - - editor1.setValue(JSON.stringify(config.schema, null, " ")); - editor2.setValue(JSON.stringify(config.options, null, " ")); - editor3.setValue(JSON.stringify(config.data, null, " ")); - + $.ajax({ + url: '/api/load/' + $('.select-form option:selected').text(), + success: function(config) { + editor1.setValue(JSON.stringify(config.schema, null, " ")); + editor2.setValue(JSON.stringify(config.options, null, " ")); + editor3.setValue(JSON.stringify(config.data, null, " ")); + alert("Formulario " + $('.select-form option:selected').text() + " cargado correctamente.") + }, + error: function() { + alert("Hubo un error al cargar el formulario") + }}) //alert("Your form was loaded from HTML5 local storage"); - } - catch (e) - { - // bad value - } + // } + // catch (e) + // { + // // bad value + // } }); // save button $(".save-button").off().click(function() { - if (!localStorage) - { - alert("Your browser must support HTML5 local storage in order to use this feature"); - return; - } + // if (!localStorage) + // { + // alert("Your browser must support HTML5 local storage in order to use this feature"); + // return; + // } var config = {}; if (schema) @@ -1084,9 +1103,21 @@ var setup = function() { config.data = data; } - var configString = JSON.stringify(config); + //var configString = JSON.stringify(config); - localStorage.setItem("alpacaDesignerConfig", configString); + $.ajax({ + url: '/api/save/'+ $('#form').val(), + data : JSON.stringify(config), + contentType : 'application/json', + type : 'POST', + success: function() { + $('.select-form').append($('