Sha256: 6818506e224ce568aeb2e39683977b7c93cc385f2c750079a6d6b46cff6028fb

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 KB

Contents

const mongoose = require('mongoose/browser');
const cql = require('cql-execution');
const DateTime = require('./DateTime');

function Interval(key, options) {
  mongoose.SchemaType.call(this, key, options, 'Interval');
}
Interval.prototype = Object.create(mongoose.SchemaType.prototype);

Interval.prototype.cast = (interval) => {
  if (interval.isInterval) {
    return interval;
  }
  const casted = new cql.Interval(interval.low, interval.high, interval.lowClosed, interval.highClosed);

  // Cast Low and High values to Quantities if it is a quantity
  if (casted.low && casted.low.unit && casted.low.value) {
    casted.low = new cql.Quantity(casted.low);
    if (casted.high && casted.high.unit && casted.high.value) {
      casted.high = new cql.Quantity(casted.high);
    }
    return casted;
  }

  // Cast to DateTime if it is a string representing a DateTime
  if (casted.low) {
    casted.low = DateTime.prototype.cast(casted.low);
  }

  if (casted.high) {
    casted.high = DateTime.prototype.cast(casted.high);
  }
  return casted;
};

mongoose.Schema.Types.Interval = Interval;
module.exports = Interval;

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cqm-models-2.0.1 app/assets/javascripts/basetypes/Interval.js
cqm-models-2.0.0 app/assets/javascripts/basetypes/Interval.js