]> git.mxchange.org Git - friendica-addons.git/blob - calc/calc.php
Changes:
[friendica-addons.git] / calc / calc.php
1 <?php
2 /**
3  * Name: Calculator App
4  * Description: Simple Calculator Application
5  * Version: 1.0
6  * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
7  */
8
9 use Friendica\App;
10 use Friendica\Core\Hook;
11 use Friendica\DI;
12
13 function calc_install() {
14         Hook::register('app_menu', 'addon/calc/calc.php', 'calc_app_menu');
15 }
16
17 function calc_app_menu(App $a, array &$b)
18 {
19         $b['app_menu'][] = '<div class="app-title"><a href="calc">Calculator</a></div>'; 
20 }
21
22
23 function calc_module()
24 {
25 }
26
27 function calc_init(App $a)
28 {
29         $x = <<< EOT
30
31 <script language="JavaScript">
32 /**************************************
33  * www.FemaleNerd.com         *
34  **************************************/
35
36 // Declare global variables
37 var displayText = ""
38 var num1
39 var num2
40 var operatorType
41
42 // Write to display
43 function addDisplay(n){
44    id = document.getElementById("display");
45 id.value = ""
46 displayText += n
47 id.value = displayText
48 }
49
50 // Addition
51 function addNumbers() {
52 if (displayText == "") {
53   displayText = result
54  }
55 num1 = parseFloat(displayText)
56 operatorType = "add"
57 displayText = ""
58 }
59
60 // Subtraction
61 function subtractNumbers() {
62 if (displayText == "") {
63   displayText = result
64  }
65 num1 = parseFloat(displayText)
66 operatorType = "subtract"
67 displayText = ""
68 }
69
70 // Multiplication
71 function multiplyNumbers() {
72 if (displayText == "") {
73   displayText = result
74  }
75 num1 = parseFloat(displayText)
76 operatorType = "multiply"
77 displayText = ""
78 }
79
80 // Division
81 function divideNumbers() {
82 if (displayText == "") {
83   displayText = result
84  }
85 num1 = parseFloat(displayText)
86 operatorType = "divide"
87 displayText = ""
88 }
89
90 // Sine
91 function sin() {
92    id = document.getElementById("display");
93 if (displayText == "") {
94   num1 = result
95   }
96 else {
97   num1 = parseFloat(displayText)
98   }
99 if (num1 != "") {
100   result = Math.sin(num1)
101   id.value = result
102   displayText = ""
103   }
104 else {
105   alert("Please write the number first")
106   }
107 }
108
109 // Cosine
110 function cos() {
111    id = document.getElementById("display");
112 if (displayText == "") {
113   num1 = result
114   }
115 else {
116   num1 = parseFloat(displayText)
117   }
118 if (num1 != "") {
119   result = Math.cos(num1)
120   id.value = result
121   displayText = ""
122   }
123 else {
124   alert("Please write the number first")
125   }
126 }
127
128 // ArcSine
129 function arcSin() {
130    id = document.getElementById("display");
131 if (displayText == "") {
132   num1 = result
133   }
134 else {
135   num1 = parseFloat(displayText)
136   }
137 if (num1 != "") {
138   result = Math.asin(num1)
139   id.value = result
140   displayText = ""
141   }
142 else {
143   alert("Please write the number first")
144   }
145 }
146
147 // ArcCosine
148 function arcCos() {
149    id = document.getElementById("display");
150 if (displayText == "") {
151   num1 = result
152   }
153 else {
154   num1 = parseFloat(displayText)
155   }
156 if (num1 != "") {
157   result = Math.acos(num1)
158   id.value = result
159   displayText = ""
160   }
161 else {
162   alert("Please write the number first")
163   }
164 }
165
166 // Square root
167 function sqrt() {
168    id = document.getElementById("display");
169 if (displayText == "") {
170   num1 = result
171   }
172 else {
173   num1 = parseFloat(displayText)
174   }
175 if (num1 != "") {
176   result = Math.sqrt(num1)
177   id.value = result
178   displayText = ""
179   }
180 else {
181   alert("Please write the number first")
182   }
183 }
184
185 // Square number (number to the power of two)
186 function square() {
187    id = document.getElementById("display");
188 if (displayText == "") {
189   num1 = result
190   }
191 else {
192   num1 = parseFloat(displayText)
193   }
194 if (num1 != "") {
195   result = num1 * num1
196   id.value = result
197   displayText = ""
198   }
199 else {
200   alert("Please write the number first")
201   }
202 }
203
204 // Convert degrees to radians
205 function degToRad() {
206    id = document.getElementById("display");
207 if (displayText == "") {
208   num1 = result
209   }
210 else {
211   num1 = parseFloat(displayText)
212   }
213 if (num1 != "") {
214   result = num1 * Math.PI / 180
215   id.value = result
216   displayText = ""
217   }
218 else {
219   alert("Please write the number first")
220   }
221 }
222
223 // Convert radians to degrees
224 function radToDeg() {
225    id = document.getElementById("display");
226 if (displayText == "") {
227   num1 = result
228   }
229 else {
230   num1 = parseFloat(displayText)
231   }
232 if (num1 != "") {
233   result = num1 * 180 / Math.PI
234   id.value = result
235   displayText = ""
236   }
237 else {
238   alert("Please write the number first")
239   }
240 }
241
242 // Calculations
243 function calculate() {
244    id = document.getElementById("display");
245
246 if (displayText != "") {
247   num2 = parseFloat(displayText)
248 // Calc: Addition
249   if (operatorType == "add") {
250     result = num1 + num2
251     id.value = result
252     }
253 // Calc: Subtraction
254   if (operatorType == "subtract") {
255     result = num1 - num2
256     id.value = result
257     }
258 // Calc: Multiplication
259   if (operatorType == "multiply") {
260     result = num1 * num2
261     id.value = result
262     }
263 // Calc: Division
264   if (operatorType == "divide") {
265     result = num1 / num2
266     id.value = result
267     }
268   displayText = ""
269   }
270   else {
271   id.value = "Oops! Error!"
272   }
273 }
274
275 // Clear the display
276 function clearDisplay() {
277    id = document.getElementById("display");
278
279 displayText = ""
280 id.value = ""
281 }
282 </script>
283
284 EOT;
285 DI::page()['htmlhead'] .= $x;
286 }
287
288 function calc_content($app) {
289
290 $o = '';
291
292 $o .=  <<< EOT
293
294 <h3>Calculator</h3>
295 <br /><br />
296 <table>
297 <tbody><tr><td> 
298 <table bgcolor="#af9999" border="1">
299 <tbody><tr><td>
300 <table border="1" cellpadding="2" cellspacing="2">
301 <form name="calc">
302 <!--
303 <TR><TD VALIGN=top colspan=6 ALIGN="center"> <H2>Calculator</H2> </TD>
304 -->
305 <tbody><tr>
306         <td colspan="5"><input size="22" id="display" name="display" type="text"></td>
307 </tr><tr align="left" valign="middle">
308         <td><input name="one" value="&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;" onclick="addDisplay(1)" type="button"></td>
309         <td><input name="two" value="&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;" onclick="addDisplay(2)" type="button"></td>
310         <td><input name="three" value="&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;" onclick="addDisplay(3)" type="button"></td>
311         <td><input name="plus" value="&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;" onclick="addNumbers()" type="button"></td>
312 </tr><tr align="left" valign="middle">
313         <td><input name="four" value="&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;" onclick="addDisplay(4)" type="button"></td>
314         <td><input name="five" value="&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;" onclick="addDisplay(5)" type="button"></td>
315         <td><input name="six" value="&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;" onclick="addDisplay(6)" type="button"></td>
316         <td><input name="minus" value="&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;" onclick="subtractNumbers()" type="button"></td>
317 </tr><tr align="left" valign="middle">
318         <td><input name="seven" value="&nbsp;&nbsp;7&nbsp;&nbsp;&nbsp;" onclick="addDisplay(7)" type="button"></td>
319         <td><input name="eight" value="&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;" onclick="addDisplay(8)" type="button"></td>
320         <td><input name="nine" value="&nbsp;&nbsp;9&nbsp;&nbsp;&nbsp;" onclick="addDisplay(9)" type="button"></td>
321         <td><input name="multiplication" value="&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;" onclick="multiplyNumbers()" type="button"></td>
322 </tr><tr align="left" valign="middle">
323         <td><input name="zero" value="&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;" onclick="addDisplay(0)" type="button"></td>
324         <td><input name="pi" value="&nbsp;Pi&nbsp;&nbsp;" onclick="addDisplay(Math.PI)" type="button"> </td> 
325         <td><input name="dot" value="&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;" onclick='addDisplay(".")' type="button"></td>
326         <td><input name="division" value="&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;" onclick="divideNumbers()" type="button"></td>
327 </tr><tr align="left" valign="middle">
328         <td><input name="sqareroot" value="sqrt" onclick="sqrt()" type="button"></td>
329         <td><input name="squarex" value=" x^2" onclick="square()" type="button"></td>
330         <td><input name="deg-rad" value="d2r&nbsp;" onclick="degToRad()" type="button"></td>
331         <td><input name="rad-deg" value="r2d&nbsp;" onclick="radToDeg()" type="button"></td>
332 </tr><tr align="left" valign="middle">
333         <td><input name="sine" value="&nbsp;sin&nbsp;" onclick="sin()" type="button"></td>
334         <td><input name="arcsine" value="asin" onclick="arcSin()" type="button"></td>
335         <td><input name="cosine" value="cos" onclick="cos()" type="button"></td>
336         <td><input name="arccosine" value="acs" onclick="arcCos()" type="button"></td>
337
338 </tr><tr align="left" valign="middle">
339         <td colspan="2"><input name="clear" value="&nbsp;&nbsp;Clear&nbsp;&nbsp;" onclick="clearDisplay()" type="button"></td>
340         <td colspan="3"><input name="enter" value="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" onclick="calculate()" type="button"></td>
341
342 </tr></tbody></table>
343 </form>
344
345         <!--
346         <TD VALIGN=top> 
347                 <B>NOTE:</B> All sine and cosine calculations are
348                 <br>done in radians. Remember to convert first
349                 <br>if using degrees.
350         </TD>
351         -->
352         
353 </td></tr></tbody></table>
354
355
356 </td></tr></tbody></table>
357
358 EOT;
359         return $o;
360 }