jiskattema/spot

View on GitHub
src/pages/configure-partition/partition-duration.js

Summary

Maintainability
D
1 day
Test Coverage
var View = require('ampersand-view');
var templates = require('../../templates');
var moment = require('moment-timezone');

module.exports = View.extend({
  template: templates.configurePartition.partitionDuration,
  derived: {
    minvalAsText: {
      deps: ['model.minval', 'model.isDuration'],
      fn: function () {
        if (this.model.isDuration) {
          return this.model.minval.toISOString();
        } else {
          return 'not a date';
        }
      }
    },
    maxvalAsText: {
      deps: ['model.maxval', 'model.isDuration'],
      fn: function () {
        if (this.model.isDuration) {
          return this.model.maxval.toISOString();
        } else {
          return 'not a date';
        }
      }
    }
  },
  bindings: {
    'model.isDuration': {
      type: 'toggle',
      hook: 'group-duration-panel'
    },

    'minvalAsText': {
      type: 'value',
      hook: 'group-startduration-input'
    },
    'maxvalAsText': {
      type: 'value',
      hook: 'group-endduration-input'
    }

  },
  events: {
    'click [data-hook~=group-durationrange-button]': function () {
      var partition = this.model;
      partition.reset();

      this.queryByHook('group-startduration-input').dispatchEvent(new window.Event('input'));
      this.queryByHook('group-endduration-input').dispatchEvent(new window.Event('input'));
      this.parent.resetFilter = true;
    },
    'change [data-hook~=group-startduration-input]': function () {
      var d = moment.duration(this.queryByHook('group-startduration-input').value);
      if (moment.isDuration(d)) {
        this.model.minval = d;
      }
      this.parent.resetFilter = true;
    },
    'change [data-hook~=group-endduration-input]': function () {
      var d = moment.duration(this.queryByHook('group-endduration-input').value);
      if (moment.isDuration(d)) {
        this.model.maxval = d;
      }
      this.parent.resetFilter = true;
    }
  }
});