solidstate
Version:
An observable REST client for Javascript with a dramatically simple & fluent API.
32 lines (26 loc) • 1.23 kB
JavaScript
if (typeof define !== 'function') { var define = require('amdefine')(module); }
define([
'knockout',
'underscore',
'./FilterReference'
], function(ko, _, FilterReference) {
'use strict';
var o = ko.observable,
u = ko.utils.unwrapObservable,
c = ko.computed,
w = function(v) { return ko.isObservable(v) ? v : o(v); };
// JoinReference
//
// A FilterReference where the `from` attribute and `to` attribute must match exactly.
//
var JoinReference = function(args) {
var from = args.from || die('Missing required argument `from` in solidstate.JoinReference'),
to = args.to || die('Missing required argument `to` in solidstate.JoinReference');
return FilterReference(function(source, destination) {
_(source).has('attributes') || die('Model `source` passed to JoinReference missing attributes:' + source + '('+ui(source)+')');
_(destination).has('attributes') || die('Model `destination` passed to JoinReference missing attributes:' + destination +'('+u(destination)+')');
return u(source.attributes()[from]) === u(destination.attributes()[to]);
});
};
return JoinReference;
});