spincycle
Version:
A reactive message router and object manager that lets clients subscribe to object property changes on the server
103 lines (89 loc) • 3.76 kB
HTML
<link rel="import" href="../../bower_components/polymer/polymer.html">
<link rel="import" href="../../bower_components/paper-listbox/paper-listbox.html">
<link rel="import" href="../../bower_components/paper-item/paper-item.html">
<link rel="import" href="../../bower_components/iron-icons/maps-icons.html">
<link rel="import" href="../../bower_components/iron-icons/iron-icons.html">
<dom-module id="spin-directreference">
<template>
<style>
</style>
<div>
<h4>{{modeltype}}: {{name}}</h4>
<paper-button raised on-tap="changeModel">Change</paper-button>
<paper-dialog style="padding:20px" id="addmodeldialog">
<h2>Add {{item.type}}</h2>
<spin-allmodels client="{{client}}" user="{{user}}" incallbacks="{{dialogCallbacks}}" model="{{modeltype}}" itemselected="{{listitemselected}}"></spin-allmodels>
<div class="buttons">
<paper-button dialog-dismiss>Cancel</paper-button>
<paper-button dialog-confirm>Accept</paper-button>
</div>
</paper-dialog>
</div>
</template>
<script>
Polymer({
is: 'spin-directreference',
properties:
{
client:{type:'Object', notify: true},
user:{type:'Object', notify: true},
modelid: {type: 'String'},
modeltype: {type: 'String'},
propname: {type: 'String'},
incallbacks: {type: 'Object'},
name: {type: 'String'},
listitemselected:{type:'Object',notify:true, observer: 'onListItemSelected'}
},
changeModel: function(e)
{
console.log('spin-directreference changeModel called')
var id = "addmodeldialog"
var dialog = this.$$('#'+id)
dialog.open()
},
onListItemSelected: function(item)
{
console.log('spin-directreference got listitemselected')
console.dir(item)
this.onDialogSelect(item)
},
onDialogSelect: function(item)
{
console.log('======= spin-directreference onDialogSelect called. propname = '+this.propname)
console.dir(item)
this.set('name', item.name)
this.object = item
if(this.incallbacks.onSelectReference)
{
this.incallbacks.onSelectReference(this.propname, item)
}
var id = "addmodeldialog"
var dialog = this.$$('#'+id)
dialog.close()
},
ready: function()
{
this.dialogCallbacks =
{
onSelect: this.onDialogSelect.bind(this)
}
this.name = '<undefined>'
},
attached: function()
{
this.getObjectForId()
},
getObjectForId: function()
{
if(this.modelid && this.modelid.length > 2)
{
this.client.emitMessage({target: '_get'+this.modeltype, type: this.modeltype, obj: {id: this.modelid, type: this.modeltype}}).then(function(obj)
{
this.set('name', obj.name)
this.object = obj
}.bind(this))
}
}
})
</script>
</dom-module>