7
7
<meta name="author" content="Josh Campbell">
8
8
<link rel="shortcut icon" href="/bootstrap/assets/ico/favicon.png">
9
9
10
- <title>IoT Gate Opperator Addon</title>
10
+ <title>IoT Gate Operator Addon</title>
11
11
12
12
<!-- Bootstrap core CSS -->
13
13
<link href="/bootstrap/css/bootstrap.css" rel="stylesheet">
22
22
<script src="/bootstrap/assets/js/respond.min.js"></script>
23
23
<![endif]-->
24
24
25
+ <style>
26
+ .button {
27
+ position: relative;
28
+ border: none;
29
+ color: #FFFFFF;
30
+ text-align: center;
31
+ -webkit-transition-duration: 0.4s; /* Safari */
32
+ transition-duration: 0.4s;
33
+ text-decoration: none;
34
+ overflow: hidden;
35
+ cursor: pointer;
36
+ }
37
+
38
+ .button:after {
39
+ content: "";
40
+ background: #90EE90;
41
+ display: block;
42
+ position: absolute;
43
+ padding-top: 300%;
44
+ padding-left: 350%;
45
+ margin-left: -40px!important;
46
+ margin-top: -120%;
47
+ opacity: 0;
48
+ transition: all 0.8s
49
+ }
50
+
51
+ .button:active:after {
52
+ padding: 0;
53
+ margin: 0;
54
+ opacity: 1;
55
+ transition: 0s
56
+ }
57
+ </style>
58
+
25
59
</head>
26
60
27
61
<body>
28
62
29
63
<div class="navbar navbar-inverse navbar-fixed-top">
30
64
<div class="container">
31
65
<div class="navbar-header">
32
- <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
66
+ <!--< button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">-- >
33
67
<span class="icon-bar"></span>
34
68
<span class="icon-bar"></span>
35
69
<span class="icon-bar"></span>
36
70
</button>
37
- <a class="navbar-brand" href="#">IoT Gate Opperator Addon</a>
71
+ <a class="navbar-brand" href="#">IoT Gate Operator Addon</a>
38
72
</div>
39
73
<div class="collapse navbar-collapse">
40
74
<!--
41
75
<ul class="nav navbar-nav">
42
- <li class="active"><a href="http://projects. ajillion.com/gate ">Home</a></li>
43
- <li class="active"><a href="http://projects. ajillion.com/gate ">Admin</a></li>
76
+ <li class="active"><a href="http://ajillion.com/projects ">Home</a></li>
77
+ <li class="active"><a href="http://ajillion.com/projects ">Admin</a></li>
44
78
</ul>-->
45
79
46
80
</div>
49
83
50
84
<div class="container">
51
85
52
- <div class="starter-template">
53
- <button type="button" class="btn btn-lg btn-success btn-block bigger-button" id="open_gate">Open Gate</button><br>
54
- <button type="button" class="btn btn-lg btn-primary btn-block" id="latch30m_gate">Latch Open for 30 min</button><br>
55
- <button type="button" class="btn btn-lg btn-primary btn-block" id="latch8h_gate">Latch Open for 8 hours</button><br>
56
- <button type="button" class="btn btn-lg btn-warning btn-block" id="close_gate">Close Now</button>
57
- <br><br>
86
+ <div class="text-center" style="padding-top:5px; padding-left:15px; padding-right:15px; ">
87
+ <button type="button" class="button btn btn-lg btn-success btn-block bigger-button" id="open_gate">Open Gate</button><br>
88
+ <button type="button" class="button btn btn-lg btn-primary btn-block" id="latch30m_gate">Latch Open for 30 min</button><br>
89
+ <button type="button" class="button btn btn-lg btn-primary btn-block" id="latch8h_gate">Latch Open for 8 hours</button><br>
90
+ <button type="button" class="button btn btn-lg btn-warning btn-block" id="close_gate">Close Now</button><br>
58
91
<div class="jumbotron alert alert-info" role="alert">
59
- <strong>Gate Status: </strong><span id="status"><?= $ data ['gatestate ' ]?> </span><br>
60
- Last opened <span id="last_opened"><?= $ data ['last_opened ' ]?> </span>
92
+ <strong>The gate is:</strong> <span id="status"><?= $ data ['gatestate ' ]?> </span> <img class="m-0 p-0" id="status-img" src="/images/dual-ring-loader.gif" alt="..." height="32" width="32"><br>
93
+ Last opened <span id="last_opened"><?= $ data ['last_opened ' ]?> </span><br>
94
+ Controller Status: <span id="device_status" style="color:green"><?= $ data ['device_status ' ]?> </span>
61
95
</div>
62
96
</div>
63
97
70
104
<script>
71
105
72
106
$(document).ready(function(){
107
+ $("#status-img").hide();
73
108
resetStatus();
74
109
})
75
-
110
+
76
111
function sendJSON(JSONout){
77
- var url = 'https://agent.electricimp.com/YOUR-AGENT-CODE ';
112
+ var url = 'https://agent.electricimp.com/-xWQ-bU_8bJ- ';
78
113
$.post(url, JSONout);
79
114
}
80
-
115
+
81
116
$("#open_gate").click(function() {
82
117
var JSONout = '{"c":"btn","val":{"cmd":"open"}}';
83
118
sendJSON(JSONout);
84
- $("#status").text("Opening...");
119
+ //$("#status").text("Opening");
120
+ //$("#status-img").show();
121
+ resetStatus();
85
122
});
86
-
123
+
87
124
$("#latch30m_gate").click(function() {
88
125
var JSONout = '{"c":"btn","val":{"cmd":"latch30m"}}';
89
126
sendJSON(JSONout);
90
- $("#status").text("Opening...");
127
+ //$("#status").text("Opening");
128
+ //$("#status-img").show();
129
+ resetStatus();
91
130
});
92
-
131
+
93
132
$("#latch8h_gate").click(function() {
94
133
var JSONout = '{"c":"btn","val":{"cmd":"latch8h"}}';
95
134
sendJSON(JSONout);
96
- $("#status").text("Opening...");
135
+ //$("#status").text("Opening");
136
+ //$("#status-img").show();
137
+ resetStatus();
97
138
});
98
-
139
+
99
140
$("#close_gate").click(function() {
100
141
var JSONout = '{"c":"btn","val":{"cmd":"close"}}';
101
142
sendJSON(JSONout);
102
- $("#status").text("Closing...");
143
+ //$("#status").text("Closing");
144
+ //$("#status-img").show();
145
+ resetStatus();
103
146
});
104
-
147
+
105
148
function resetStatus() {
106
149
// Target url
107
150
var target = 'http://projects.ajillion.com/get_gate_state';
108
-
151
+
109
152
// Request
110
153
var data = {
111
154
agent : 'app'
112
155
};
113
-
156
+
114
157
// Send ajax post request
115
158
$.ajax({
116
159
url: target,
@@ -122,29 +165,40 @@ function resetStatus() {
122
165
switch(data.gatestate) {
123
166
case 0:
124
167
$("#status").text('Closed');
168
+ $("#status-img").hide();
125
169
break;
126
170
case 1:
127
- $("#status").text('Opening...');
171
+ $("#status").text('Opening');
172
+ $("#status-img").show();
128
173
break;
129
174
case 2:
130
175
$("#status").text('Open');
176
+ $("#status-img").hide();
131
177
break;
132
178
case 3:
133
- $("#status").text('Closing...');
179
+ $("#status").text('Closing');
180
+ $("#status-img").show();
134
181
break;
135
182
default:
136
183
$("#status").text('Error');
184
+ $("#status-img").hide();
137
185
}
138
-
186
+
139
187
$("#last_opened").text(data.last_opened);
188
+
189
+ var device_status = (data.device_state.devicestate ? "Online" : "Offline");
190
+ if (data.device_state.devicestate == 0) device_status = device_status + data.device_offline_timestamp;
191
+ var device_status_color = (data.device_state.devicestate ? "green" : "red");
192
+ $("#device_status").text(device_status);
193
+ $('#device_status').attr('style','color:' + device_status_color);
140
194
},
141
195
error: function(XMLHttpRequest, textStatus, errorThrown)
142
196
{
143
197
// Error message
144
198
$("#status").text('Server Error');
145
199
}
146
200
});
147
-
201
+
148
202
setTimeout(resetStatus, 3000);
149
203
}
150
204
0 commit comments