This repository has been archived by the owner on Jun 11, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfd-polymer-thing.html
155 lines (144 loc) · 5.69 KB
/
fd-polymer-thing.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<link rel="import" href="../polymer/polymer.html">
<link rel="import" href="../fd-polymer-rest-service/fd-polymer-rest-service.html">
<link rel="import" href="../fd-polymer-ws-service/fd-polymer-ws-service.html">
<link rel="import" href="../fd-polymer-api-settings/fd-polymer-api-settings.html">
<link rel="import" href="../fd-polymer-i18next-translate/fd-polymer-i18next-translate.html">
<link rel="import" href="../paper-shadow/paper-shadow.html">
<link rel="import" href="../paper-slider/paper-slider.html">
<link rel="import" href="../paper-toggle-button/paper-toggle-button.html">
<link rel="import" href="../paper-icon-button/paper-icon-button.html">
<link rel="import" href="../fd-polymer-generics/fd-generic-item.html">
<link rel="import" href="../fd-polymer-ispermitted/fd-polymer-ispermitted.html">
<!--
Element providing proof of concept of a Thing card, with all needed features
##### Example
<fd-thing address="fritz.bestmazzo.it" port="9111" apiVersion="v3"
thingUuid="76fd619c-617b-4fb7-9870-8f08164c4926" guest></fd-thing>
@element fd-thing
@blurb Element providing proof of concept of a Thing card, with all needed features
@status beta
@homepage http://bestmazzo.github.io/fd-polymer-thing
-->
<polymer-element name="fd-thing" attributes="ssl address port apiVersion object uuid guest mode encopy enshape">
<template>
<style>
:host {
display: block;
position: relative;
font-size: 1.2rem;
font-weight: 300;
font-family: RobotoDraft, 'Helvetica Neue', Helvetica, Arial;
}
</style>
<fd-api-settings
ssl="{{ssl}}" address="{{address}}"
port="{{port}}" apiVersion="{{apiVersion}}"
apiUrl="{{apiUrl}}">
</fd-api-settings>
<fd-rest-service
id="objectClick"
fdtype="things/{{object.uuid}}/click"
auto="false" method="POST"
guest="{{guest}}">
</fd-rest-service>
<fd-rest-service
id="objectBehaviorChange"
auto="false" method="POST"
guest="{{guest}}">
</fd-rest-service>
<fd-ispermitted permission="objects:update" allowed="{{canUpdate}}"></fd-ispermitted>
<fd-generic-item on-icon-tap="{{tapObject}}" encopy="{{encopy}}" ensettings="{{canUpdate}}" mode="{{mode}}" guest="{{guest}}" item="{{object}}" uuid="{{uuid}}" type="things" wsType="objectchange" enextra="true" enshape="{{enshape}}">
<icon>
<paper-icon-button src="{{objectIcon | asFreedomoticResource(apiUrl) }}" on-tap="{{tapObject}}" >
</paper-icon-button>
</icon>
<name>{{object.name}}</name>
<description>{{object.description}}</description>
<extra>
<template repeat="{{behavior in object.behaviors}}">
<div layout horizontal self-stretch >
<div layout style="padding-right:5px;height:32px;">{{behavior.name | t(apiUrl)}}</div>
<template if="{{behavior['@class']=='com.freedomotic.model.object.RangedIntBehavior'}}" >
<paper-slider flex style="width:100%;" id="{{behavior.name}}" layout value="{{behavior.value}}" min="{{behavior.min}}" max="{{behavior.max}}" pin on-change="{{onBehaviorChange}}"></paper-slider>
</template>
<template if="{{behavior['@class']=='com.freedomotic.model.object.BooleanBehavior'}}" >
<paper-toggle-button id="{{behavior.name}}" layout checked="{{behavior.value}}" on-change="{{onBehaviorChange}}"></paper-toggle-button>
</template>
</div>
</template>
</extra>
<modify>
<div layout vertical>
<h3>{{object.name}}</h3>
<paper-input label="{{'name' | t }}" value="{{object.name}}" floatingLabel></paper-input>
<paper-input label="{{'description' | t }}" value="{{object.description}}" floatingLabel></paper-input>
<paper-input label="{{'protocol' | t }}" value="{{object.protocol}}"floatingLabel></paper-input>
<paper-input label="{{'address' | t }}" value="{{object.phisicalAddress}}" floatingLabel></paper-input>
</div>
</modify>
</fd-generic-item>
</template>
<script>
Polymer("fd-thing", {
/**
* The 'guest' attribute tells whether the API call should be made as a guest user
*
* @attribute guest
* @type boolean
*/
/**
* The 'thingUuid' attribute specifies the uuid of Thing to show
*
* @attribute thingUuid
* @type string
*/
/**
* The 'address' attribute specifies the hostname or ip address of API service
*
* @attribute address
* @type string
*/
/**
* The 'apiVersion' attribute specifies the API version to use
*
* @attribute apiVersion
* @type string
*/
/**
* The 'port' attribute specifies the tcp port of API service.
* Default value 0 mean the port number is choosen from the SSL attribute,
* so port will be 9111 if no SSL, and 9113 is SSL
* @attribute port
* @type int
*/
/**
* The 'ssl' attribute tells whether the API call requires a encrypted connection
*
* @attribute ssl
* @type boolean
*/
mode: 'matCard',
guest: undefined,
objectIcon: undefined,
object: undefined,
tapObject: function(){
this.$.objectClick.go();
},
objectChanged: function(){
if (!!this.object && !!this.object.representation){
this.objectIcon = this.object.representation[this.object.currentRepresentation].icon;
}
},
onBehaviorChange: function(evt, t,d){
for (behavior in this.object.behaviors){
if (this.object.behaviors[behavior].name === d.id){
this.$.objectBehaviorChange.fdtype="things/" + this.object.uuid +
"/behaviorchange/"+ this.object.behaviors[behavior].name + "/" + this.object.behaviors[behavior].value;
console.log(this.$.objectBehaviorChange.fdtype);
this.$.objectBehaviorChange.go();
}
}
}
});
</script>
</polymer-element>