Sha256: d530fd930fa2f8e4120427ec91a76e01d0d7b438f9dd47413282f5ea0e10dfb7

Contents?: true

Size: 1.77 KB

Versions: 9

Compression:

Stored size: 1.77 KB

Contents

HAL.Views.QueryUriDialog = Backbone.View.extend({
  initialize: function(opts) {
    this.href = opts.href;
    this.uriTemplate = uritemplate(this.href);
    _.bindAll(this, 'submitQuery');
    _.bindAll(this, 'renderPreview');
  },

  className: 'modal fade',

  events: {
    'submit form': 'submitQuery',
    'keyup textarea': 'renderPreview',
    'change textarea': 'renderPreview'
  },

  submitQuery: function(e) {
    e.preventDefault();
    var input;
    try {
      input = JSON.parse(this.$('textarea').val());
    } catch(err) {
      input = {};
    }
    this.$el.modal('hide');
    window.location.hash = this.uriTemplate.expand(input);
  },

  renderPreview: function(e) {
    var input, result;
    try {
      input = JSON.parse($(e.target).val());
      result = this.uriTemplate.expand(input);
    } catch (err) {
      result = 'Invalid json input';
    }
    this.$('.preview').html(result);
  },

  extractExpressionNames: function (template) {
    var names = [];
    for (var i=0; i<template.set.length; i++) {
      if (template.set[i].vars) {
        for (var j=0; j<template.set[i].vars.length; j++) {
          names.push(template.set[i].vars[j].name);
        }
      }
    }
    return names;
  },

  createDefaultInput: function (expressionNames) {
    var defaultInput = {};
    for (var i=0; i<expressionNames.length; i++) {
      defaultInput[expressionNames[i]] = '';
    }
    return JSON.stringify(defaultInput, null, HAL.jsonIndent);
  },

  render: function(opts) {
    var input = this.createDefaultInput(this.extractExpressionNames(this.uriTemplate));
    this.$el.html(this.template({ href: this.href, input: input }));
    this.$('textarea').trigger('keyup');
    this.$el.modal(opts);
    return this;
  },

  template: _.template($('#query-uri-template').html())
});

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
pact_broker-1.3.2.rc1 vendor/hal-browser/js/hal/views/query_uri_dialog.js
pact_broker-1.3.1 vendor/hal-browser/js/hal/views/query_uri_dialog.js
pact_broker-1.3.0 vendor/hal-browser/js/hal/views/query_uri_dialog.js
pact_broker-1.2.0 vendor/hal-browser/js/hal/views/query_uri_dialog.js
pact_broker-1.1.0 vendor/hal-browser/js/hal/views/query_uri_dialog.js
pact_broker-1.0.0 vendor/hal-browser/js/hal/views/query_uri_dialog.js
pact_broker-1.0.0.alpha3 vendor/hal-browser/js/hal/views/query_uri_dialog.js
pact_broker-1.0.0.alpha2 vendor/hal-browser/js/hal/views/query_uri_dialog.js
pact_broker-1.0.0.alpha1 vendor/hal-browser/js/hal/views/query_uri_dialog.js