hardware_information 1.0.83 → 1.0.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +37 -22
- data/lib/hardware_information/misc/purchased_hardware/purchased_hardware.rb +59 -27
- data/lib/hardware_information/version/version.rb +2 -2
- data/lib/hardware_information/www/purchased_hardware/README.md +3 -0
- data/lib/hardware_information/www/{my_hardware.cgi → purchased_hardware/purchased_hardware.cgi} +1 -1
- data/lib/hardware_information/www/purchased_hardware/purchased_hardware.rb +606 -0
- data/lib/hardware_information/www/{my_hardware_for_sinatra.rb → purchased_hardware/purchased_hardware_for_sinatra.rb} +1 -1
- metadata +8 -7
- data/lib/hardware_information/www/my_hardware.rb +0 -498
@@ -0,0 +1,606 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# This page should be kept in german.
|
6
|
+
# =========================================================================== #
|
7
|
+
# Note that the main hardware-related dataset is stored in this file:
|
8
|
+
#
|
9
|
+
# bl /home/x/data/personal/yaml/my_hardware/my_hardware.yml
|
10
|
+
#
|
11
|
+
# =========================================================================== #
|
12
|
+
# http://localhost/programming/ruby/src/hardware_information/lib/hardware_information/www/purchased_hardware/purchased_hardware.cgi
|
13
|
+
# =========================================================================== #
|
14
|
+
# rffhware
|
15
|
+
# =========================================================================== #
|
16
|
+
require 'hardware_information/misc/purchased_hardware/purchased_hardware.rb'
|
17
|
+
|
18
|
+
german(HardwareInformation::PurchasedHardware.title?) {
|
19
|
+
created_on '17.11.2023' # Friday. Rewritten on that day.
|
20
|
+
autoextend
|
21
|
+
favicon 'PC/HARDWARE/HWARE_FAVICON.png'
|
22
|
+
default_template '
|
23
|
+
|
24
|
+
pre {
|
25
|
+
font-size: 1.4em;
|
26
|
+
color:green;
|
27
|
+
}
|
28
|
+
body {
|
29
|
+
padding-left: 8px;
|
30
|
+
padding-right: 8px;
|
31
|
+
font-weight: normal;
|
32
|
+
color: white;
|
33
|
+
}
|
34
|
+
div {
|
35
|
+
font-weight: normal;
|
36
|
+
}
|
37
|
+
h1,h2,h3,h4,h5,h6 {
|
38
|
+
margin-top: 2px;
|
39
|
+
padding: 2px;
|
40
|
+
}
|
41
|
+
|
42
|
+
a,
|
43
|
+
a:active,
|
44
|
+
a:link { color: steelblue; text-decoration: none; }
|
45
|
+
a:visited { color: steelblue; }
|
46
|
+
a:hover { color: mediumspringgreen; text-decoration: none; }
|
47
|
+
i { font-size: bigger; font-weight:500}
|
48
|
+
img { margin-right: 2px;}
|
49
|
+
|
50
|
+
/*
|
51
|
+
* The following min-width is important to prevent our <td>
|
52
|
+
* tags from breaking into a newline too early.
|
53
|
+
*/
|
54
|
+
td {
|
55
|
+
min-width: 320px;
|
56
|
+
}
|
57
|
+
|
58
|
+
/*
|
59
|
+
* The next two CSS rules should style the clipboard-button.
|
60
|
+
* However had this does not properly work right now.
|
61
|
+
*/
|
62
|
+
.clipboard_button_for_purchased_hardware {
|
63
|
+
border: 50px solid tomato;
|
64
|
+
}
|
65
|
+
|
66
|
+
.clipboard_button_for_purchased_hardware:hover {
|
67
|
+
filter: brightness(150%);
|
68
|
+
}
|
69
|
+
|
70
|
+
'
|
71
|
+
body_css_class(HardwareInformation::PurchasedHardware.body_css_class)
|
72
|
+
body_css_style(HardwareInformation::PurchasedHardware.body_css_style)
|
73
|
+
font_size '1.3em'
|
74
|
+
default_hyperlinks
|
75
|
+
|
76
|
+
# =========================================================================== #
|
77
|
+
# === EURO_IMAGE
|
78
|
+
# =========================================================================== #
|
79
|
+
EURO_IMAGE = sg(:euro, 'mar2px mars8px').dup
|
80
|
+
# =========================================================================== #
|
81
|
+
# === MARGIN_RIGHT
|
82
|
+
# =========================================================================== #
|
83
|
+
MARGIN_RIGHT = 'marr10px'
|
84
|
+
S_CHAOS = sg :square_chaos, MARGIN_RIGHT
|
85
|
+
S_DARKGOLDENROD = sg :square_darkgoldenrod, MARGIN_RIGHT
|
86
|
+
GREEN_SQUARE = sg(:green_square, "bblack1 #{MARGIN_RIGHT}")
|
87
|
+
|
88
|
+
# =========================================================================== #
|
89
|
+
# === show_the_external_links (links tag, link tag)
|
90
|
+
#
|
91
|
+
# This method will display all external links.
|
92
|
+
# =========================================================================== #
|
93
|
+
def show_the_external_links
|
94
|
+
# ========================================================================= #
|
95
|
+
# Add the CSS rules for the following side-by-sid divs next:
|
96
|
+
# ========================================================================= #
|
97
|
+
add_this_css_style '
|
98
|
+
|
99
|
+
.float_container {
|
100
|
+
padding: 12px;
|
101
|
+
margin-left: 1em;
|
102
|
+
margin-right: 1em;
|
103
|
+
}
|
104
|
+
|
105
|
+
.float_child {
|
106
|
+
width: 43%;
|
107
|
+
float: left;
|
108
|
+
padding: 20px;
|
109
|
+
margin: 5px;
|
110
|
+
min-height: 320px;
|
111
|
+
border: 1px dotted gold;
|
112
|
+
margin-left: 0.5em;
|
113
|
+
margin-right: 0.5em;
|
114
|
+
}
|
115
|
+
'
|
116
|
+
# ========================================================================= #
|
117
|
+
# === Add the big-star image next
|
118
|
+
# ========================================================================= #
|
119
|
+
h2 sg(:big_star,'marr5px','drag_the_big_star')+
|
120
|
+
'Links',
|
121
|
+
'marl0_5em mar2px marb4px mart8px pad4px darkkhaki marb1em',
|
122
|
+
'links_header'
|
123
|
+
# ========================================================================= #
|
124
|
+
# === LINKS ZU HARDWARE
|
125
|
+
# ========================================================================= #
|
126
|
+
div("#{HardwareInformation::PurchasedHardware::MAIN_DIV} float_container",
|
127
|
+
'',
|
128
|
+
'margin-left: 2.25em;
|
129
|
+
margin-right: 0.85em;
|
130
|
+
border: 2px dotted lightblue;
|
131
|
+
border-radius: 20px;
|
132
|
+
padding: 1em;
|
133
|
+
min-height: 850px'){
|
134
|
+
div('float_child marl1em') {
|
135
|
+
div('mar0px pad0px') {
|
136
|
+
# =================================================================== #
|
137
|
+
# Iterate over the external links next:
|
138
|
+
# =================================================================== #
|
139
|
+
ARRAY_EXTERNAL_LINKS.each_slice(2).each {|a, b|
|
140
|
+
external_link(a, b)
|
141
|
+
}
|
142
|
+
}
|
143
|
+
}
|
144
|
+
div('float_child') {
|
145
|
+
div('mar0px pad0px') {
|
146
|
+
# =================================================================== #
|
147
|
+
# Iterate over the internal links next:
|
148
|
+
# =================================================================== #
|
149
|
+
ARRAY_INTERNAL_LINKS.each_slice(2).each {|a, b|
|
150
|
+
external_link(a, b)
|
151
|
+
}
|
152
|
+
}
|
153
|
+
}
|
154
|
+
}
|
155
|
+
end
|
156
|
+
|
157
|
+
# =========================================================================== #
|
158
|
+
# === show_local_sitemap
|
159
|
+
# =========================================================================== #
|
160
|
+
def show_local_sitemap
|
161
|
+
h2 'Sitemap',
|
162
|
+
'gold martb1px'
|
163
|
+
p('marr1em FS1em mart1em'){
|
164
|
+
sitemap_link '#Laptop1_Fujitsu_Siemens_Computers',
|
165
|
+
'Laptop FSC Amilo Pro V2030'
|
166
|
+
sitemap_link '#USB_Netgear_108_WG111T',
|
167
|
+
'USB Netgear 108 WG111T Sticks '
|
168
|
+
sitemap_link '#Maxtor_OneTouch_III_750',
|
169
|
+
'Maxtor External USB HDD 750 GIG'
|
170
|
+
sitemap_link '#Imation_clip_Flash_Drive',
|
171
|
+
'Imitation 4 GIG USB Stick'
|
172
|
+
sitemap_link '#Buffalo_Wireless_G_125',
|
173
|
+
'Buffalo Wireless Router'
|
174
|
+
sitemap_link '#computer3',
|
175
|
+
'Rechner Computer3' # Mit K8M890
|
176
|
+
sitemap_link '#Rechner_Miraculix_mit_xxxxx',
|
177
|
+
'Rechner Miraculix'
|
178
|
+
sitemap_link '#Benq_G2000WA_LCD_Monitor',
|
179
|
+
'Benq LCD Monitor'
|
180
|
+
sitemap_link '#Pinnacle_PCTV_Hybrid_Pro',
|
181
|
+
'Pinnacle PCTV Hybrid Pro Stick 330E'
|
182
|
+
sitemap_link '#LCD_TV_19LG3000',
|
183
|
+
'LCD TV 19LG3000'
|
184
|
+
sitemap_link '#FREECOM_EXTERNAL_HARD_DRIVE_3TB',
|
185
|
+
'FREECOM_EXTERNAL_HARD_DRIVE_3TB'
|
186
|
+
}
|
187
|
+
end
|
188
|
+
|
189
|
+
# =========================================================================== #
|
190
|
+
# === sitemap_link
|
191
|
+
# =========================================================================== #
|
192
|
+
def sitemap_link(intralink, desc)
|
193
|
+
unless intralink.start_with? '#'
|
194
|
+
intralink[0, 0] = '#'
|
195
|
+
end
|
196
|
+
abr(
|
197
|
+
intralink,
|
198
|
+
{
|
199
|
+
content: S_DARKGOLDENROD+desc,
|
200
|
+
css_class: 'slateblue'
|
201
|
+
}
|
202
|
+
)
|
203
|
+
end
|
204
|
+
|
205
|
+
# =========================================================================== #
|
206
|
+
# === external_link
|
207
|
+
#
|
208
|
+
# This method is used in particular by the trailing part of the webpage,
|
209
|
+
# to display the remote links.
|
210
|
+
# =========================================================================== #
|
211
|
+
def external_link(
|
212
|
+
remote,
|
213
|
+
name,
|
214
|
+
optional_use_this_id = nil
|
215
|
+
)
|
216
|
+
br
|
217
|
+
if optional_use_this_id.nil?
|
218
|
+
optional_use_this_id = name.to_s.dup.downcase.tr(' ','_')
|
219
|
+
end
|
220
|
+
abr(
|
221
|
+
remote,
|
222
|
+
content: S_CHAOS+name, # This is actually the green dot.
|
223
|
+
css_class: 's1em',
|
224
|
+
id: optional_use_this_id
|
225
|
+
)
|
226
|
+
end
|
227
|
+
|
228
|
+
# =========================================================================== #
|
229
|
+
# === discarded_on_this_day
|
230
|
+
# =========================================================================== #
|
231
|
+
def discarded_on_this_day(i = nil)
|
232
|
+
if i
|
233
|
+
br
|
234
|
+
s2 sg(:rip,'marr8px').dup+
|
235
|
+
'<span class="cyan">Entsorgt am: </span>',
|
236
|
+
'padl4_5em'
|
237
|
+
s2 i.to_s, 'BO green'
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
# =========================================================================== #
|
242
|
+
# === display_the_total_costs (cost tag)
|
243
|
+
#
|
244
|
+
# This method will show the sum of the total purchase cost; the module
|
245
|
+
# PurchasedHardware will keep track of this, so here we only display
|
246
|
+
# that value.
|
247
|
+
# =========================================================================== #
|
248
|
+
def display_the_total_costs(
|
249
|
+
i = HardwareInformation::PurchasedHardware.total_cost?
|
250
|
+
)
|
251
|
+
i = i.to_f
|
252
|
+
# ========================================================================= #
|
253
|
+
# === REGISTRIERTE GESAMTKOSTEN
|
254
|
+
# ========================================================================= #
|
255
|
+
div('mart1em s1em') {
|
256
|
+
e sg(:dot102, 'marr8px')+
|
257
|
+
'<b class="marl0_3em bigger"> Registrierte Gesamtkosten:</b> '
|
258
|
+
br
|
259
|
+
s2 i.round(3).to_s,
|
260
|
+
'yel marl2em BOLD bigger'
|
261
|
+
s2 ' ('+(i * 13.7603).round(2).to_s+' Schilling)','teal'
|
262
|
+
s2 EURO_IMAGE+
|
263
|
+
' <b>Euro</b> <span class="smaller">(seit 27.05.2004)</span>'
|
264
|
+
brbr
|
265
|
+
}
|
266
|
+
end
|
267
|
+
|
268
|
+
# =========================================================================== #
|
269
|
+
# === ARRAY_EXTERNAL_LINKS
|
270
|
+
# =========================================================================== #
|
271
|
+
ARRAY_EXTERNAL_LINKS =
|
272
|
+
[
|
273
|
+
|
274
|
+
'https://www.newegg.com/Motherboards/Category/ID-20',
|
275
|
+
'Motherboards',
|
276
|
+
|
277
|
+
'https://geizhals.at/?m=1',
|
278
|
+
'Geizhals',
|
279
|
+
|
280
|
+
'https://www.tomshardware.com/',
|
281
|
+
'Toms Hardware Tips',
|
282
|
+
|
283
|
+
'https://www.pcmasters.de/',
|
284
|
+
'Hardware News',
|
285
|
+
|
286
|
+
'https://de.wikipedia.org/wiki/Liste_der_BIOS-Signalt%C3%B6ne',
|
287
|
+
'Biep Fehlercodes (Wikipedia)',
|
288
|
+
|
289
|
+
'https://www.website-go.com/artikel/beepcodes.php',
|
290
|
+
'Gute Biep Fehlercodes mit Hilfestellung',
|
291
|
+
|
292
|
+
'https://www.interspar.at/shop/haushalt/technik-elektronik/c/I6/',
|
293
|
+
'Hardware bei InterSpar'
|
294
|
+
|
295
|
+
]
|
296
|
+
|
297
|
+
# =========================================================================== #
|
298
|
+
# === ARRAY_INTERNAL_LINKS
|
299
|
+
# =========================================================================== #
|
300
|
+
ARRAY_INTERNAL_LINKS =
|
301
|
+
[
|
302
|
+
:local_hardware_assembly,
|
303
|
+
'Lokaler Link zu Hardware Assembly',
|
304
|
+
|
305
|
+
:local_wlan,
|
306
|
+
'Lokaler Link zu WLAN',
|
307
|
+
|
308
|
+
:local_ram,
|
309
|
+
'Lokaler Link zu RAM',
|
310
|
+
|
311
|
+
:local_scanner,
|
312
|
+
'Lokaler Link zu SCANNERS',
|
313
|
+
|
314
|
+
:local_sitemap,
|
315
|
+
'Lokaler Link zur SITEMAP',
|
316
|
+
|
317
|
+
:local_kabel,
|
318
|
+
'Lokaler Link zu KABEL und ADAPTOREN',
|
319
|
+
|
320
|
+
:local_computersystem,
|
321
|
+
'Lokaler Link zu Computersystemen',
|
322
|
+
|
323
|
+
:local_waschmaschinen,
|
324
|
+
'Lokaler Link zu Waschmaschinen',
|
325
|
+
|
326
|
+
]
|
327
|
+
smaller_width(HardwareInformation::PurchasedHardware::MAIN_DIV,'',
|
328
|
+
'min-height: 35em') {
|
329
|
+
dimg 'PC/HARDWARE/HARDWARE.png',
|
330
|
+
'FLR BG_White rounded_border2',
|
331
|
+
'',
|
332
|
+
'margin-right: 1%; top: 0.2em; opacity: 0.90;'
|
333
|
+
# ========================================================================= #
|
334
|
+
# Show a little heart-image next.
|
335
|
+
# ========================================================================= #
|
336
|
+
h1 sg(:herz, 'marr10px', 'drag_heart')+
|
337
|
+
dot(106, 'marr8px')+
|
338
|
+
title?,
|
339
|
+
'mart1px marb0_5em BOLD s0_2em BLOCK mart1px marb2px',
|
340
|
+
'',
|
341
|
+
'padding-top: 0.05em'
|
342
|
+
_ = HardwareInformation.file_my_hardware
|
343
|
+
if File.exist? _
|
344
|
+
p_default_le {
|
345
|
+
e '<b class="lightblue">Herangezogene Datei:</b> '\
|
346
|
+
'<span class="palegreen">'+
|
347
|
+
stringbold(_)+"</span>\n"+
|
348
|
+
return_copy_to_clipboard_button(
|
349
|
+
'bluefish '+HardwareInformation::PurchasedHardware.file_computer_hardware?, # use_this_value
|
350
|
+
'clipboard_button_for_purchased_hardware', # use_this_id
|
351
|
+
true, # true for "yes, hide the input field
|
352
|
+
'😼', # This is the text that will be shown on the button.
|
353
|
+
'round_black2 pad8px marl1em' # CSS rules for the button.
|
354
|
+
)
|
355
|
+
br
|
356
|
+
}
|
357
|
+
# ======================================================================= #
|
358
|
+
# === Start of MyHardware
|
359
|
+
# ======================================================================= #
|
360
|
+
ehtml_comment('Start of MyHardware')
|
361
|
+
# ======================================================================= #
|
362
|
+
# Iterate over our main hash next.
|
363
|
+
# ======================================================================= #
|
364
|
+
main_hash = HardwareInformation.my_hardware?
|
365
|
+
main_hash.each_pair {|name_of_the_hardware_in_question, inner_hash|
|
366
|
+
_ = inner_hash
|
367
|
+
# ===================================================================== #
|
368
|
+
# Get the id to store onto the coming <div> tag.
|
369
|
+
# ===================================================================== #
|
370
|
+
the_id_to_store = Cyberweb.remove_html(
|
371
|
+
name_of_the_hardware_in_question.tr(' ', '_')
|
372
|
+
).to_s.strip.tr('-','_')
|
373
|
+
# ===================================================================== #
|
374
|
+
# If we find a newline then we ignore all up to that newline.
|
375
|
+
# ===================================================================== #
|
376
|
+
if the_id_to_store.include? "\n"
|
377
|
+
the_id_to_store = the_id_to_store[0, the_id_to_store.index("\n")]
|
378
|
+
end
|
379
|
+
the_id_to_store.delete! '"' if the_id_to_store.include? '"' # Eliminate '"' characters.
|
380
|
+
if the_id_to_store.count('_') > 3 # Only keep the first 3 '_'
|
381
|
+
the_id_to_store = the_id_to_store.split('_')[0..3].join('_')
|
382
|
+
end
|
383
|
+
the_id_to_store.chop! if the_id_to_store.end_with? '_'
|
384
|
+
the_id_to_store.delete!('()') if the_id_to_store.include?('(')
|
385
|
+
# ===================================================================== #
|
386
|
+
# Display a green square. Since as of September 2022 this is now a
|
387
|
+
# clickable link. When clicking on that icon it will "redirect" to
|
388
|
+
# the main ID of the segment at hand.
|
389
|
+
# ===================================================================== #
|
390
|
+
s2 '<a href="#'+the_id_to_store.to_s+'">'+
|
391
|
+
GREEN_SQUARE+
|
392
|
+
'</a>'+
|
393
|
+
name_of_the_hardware_in_question
|
394
|
+
# ======================================================================= #
|
395
|
+
# === Individual <div> tag
|
396
|
+
#
|
397
|
+
# The respective individual <div> for the Hardware in question comes
|
398
|
+
# next, along with the correct ID.
|
399
|
+
# ======================================================================= #
|
400
|
+
div('mart1em mars1em pad4px pad1em', id: the_id_to_store) {
|
401
|
+
bought_in_this_year = 1970 # Generic default.
|
402
|
+
# ===================================================================== #
|
403
|
+
# Next a Hash will be used and we have to obtain the correct entry
|
404
|
+
# from said Hash.
|
405
|
+
# ===================================================================== #
|
406
|
+
# ===================================================================== #
|
407
|
+
# === description
|
408
|
+
#
|
409
|
+
# Show the description first.
|
410
|
+
# ===================================================================== #
|
411
|
+
if _.has_key? 'description'
|
412
|
+
e _['description']
|
413
|
+
end
|
414
|
+
# ===================================================================== #
|
415
|
+
# === image
|
416
|
+
# ===================================================================== #
|
417
|
+
if _.has_key? 'image'
|
418
|
+
this_image = _['image']
|
419
|
+
e sg(
|
420
|
+
this_image[0].to_s,
|
421
|
+
this_image[1].to_s,
|
422
|
+
this_image[2].to_s,
|
423
|
+
this_image[3].to_s
|
424
|
+
)
|
425
|
+
# ===================================================================== #
|
426
|
+
# === draggable_image
|
427
|
+
# ===================================================================== #
|
428
|
+
elsif _.has_key? 'draggable_image'
|
429
|
+
array = [_['draggable_image']].flatten
|
430
|
+
array.each_slice(2) { |a, b|
|
431
|
+
dimg(a.to_s, b.to_s)
|
432
|
+
}
|
433
|
+
br
|
434
|
+
# ===================================================================== #
|
435
|
+
# === draggable_images
|
436
|
+
# ===================================================================== #
|
437
|
+
elsif _.has_key? 'draggable_images'
|
438
|
+
these_images = _['draggable_images']
|
439
|
+
these_images.each {|this_image|
|
440
|
+
dimg(this_image[0].to_s, this_image[1].to_s)
|
441
|
+
br
|
442
|
+
}
|
443
|
+
end
|
444
|
+
# ===================================================================== #
|
445
|
+
# === bought_at
|
446
|
+
#
|
447
|
+
# When did we buy a specific hardware - the date of purchase. Will
|
448
|
+
# be displayed right here.
|
449
|
+
# ===================================================================== #
|
450
|
+
if _.has_key?('bought_at') and !_['bought_at'].empty?
|
451
|
+
bought_at_that_date_specifically = _['bought_at'].to_s.dup
|
452
|
+
einkaufswagen = sg(:einkaufswagen, 'marl1em wid25px').dup
|
453
|
+
scanned_result = bought_at_that_date_specifically.scan(
|
454
|
+
/\d{2}\.\d{2}\.\d{4}/
|
455
|
+
)
|
456
|
+
if scanned_result and !scanned_result.empty?
|
457
|
+
bought_in_this_year = scanned_result.flatten.first.split('.').last.to_i
|
458
|
+
end
|
459
|
+
# ================================================================= #
|
460
|
+
# Next show when this hardware was purchased.
|
461
|
+
# ================================================================= #
|
462
|
+
s2 'Gekauft am:',
|
463
|
+
'padl1_5em marl0_5em'
|
464
|
+
s2 bought_at_that_date_specifically+
|
465
|
+
einkaufswagen,
|
466
|
+
"BOLD #{HardwareInformation::PurchasedHardware::COLOUR_PURCHASED_AT_THIS_DATE}"
|
467
|
+
# ================================================================= #
|
468
|
+
# And register it onto the main module that handles this.
|
469
|
+
# ================================================================= #
|
470
|
+
HardwareInformation::PurchasedHardware.add_bought_at(
|
471
|
+
bought_at_that_date_specifically
|
472
|
+
)
|
473
|
+
end
|
474
|
+
# =================================================================== #
|
475
|
+
# === cost
|
476
|
+
#
|
477
|
+
# This should come before the check for the key 'died_at'.
|
478
|
+
# =================================================================== #
|
479
|
+
if _.has_key? 'cost'
|
480
|
+
cost = _['cost'].to_s.to_f
|
481
|
+
case cost
|
482
|
+
when 0
|
483
|
+
e '<b class="BO yel larger">Kosten unbekannt</b>'
|
484
|
+
else
|
485
|
+
# =============================================================== #
|
486
|
+
# Add to the total cost next:
|
487
|
+
# =============================================================== #
|
488
|
+
HardwareInformation::PurchasedHardware.add_to_the_total_cost(
|
489
|
+
cost,
|
490
|
+
bought_in_this_year
|
491
|
+
)
|
492
|
+
e 'um <b class="BO larger yellow">'+
|
493
|
+
_['cost'].to_s+'</b>'+
|
494
|
+
EURO_IMAGE.to_s
|
495
|
+
"\n"' Euro</b> erworben'
|
496
|
+
end
|
497
|
+
end
|
498
|
+
# ===================================================================== #
|
499
|
+
# === died_at
|
500
|
+
#
|
501
|
+
# When was it discarded.
|
502
|
+
# ===================================================================== #
|
503
|
+
if _.has_key? 'died_at'
|
504
|
+
discarded_on_this_day(_['died_at'])
|
505
|
+
end
|
506
|
+
# ===================================================================== #
|
507
|
+
# === link
|
508
|
+
# ===================================================================== #
|
509
|
+
if _.has_key? 'link'
|
510
|
+
br
|
511
|
+
a(
|
512
|
+
_['link'][0].to_s,
|
513
|
+
content: '→ '+_['link'][0].to_s,
|
514
|
+
css_class: _['link'][1].to_s
|
515
|
+
)
|
516
|
+
# ===================================================================== #
|
517
|
+
# === links
|
518
|
+
# ===================================================================== #
|
519
|
+
elsif _.has_key? 'links'
|
520
|
+
_['links'].each {|entry, inner_array|
|
521
|
+
br
|
522
|
+
a(
|
523
|
+
inner_array[0].to_s,
|
524
|
+
content: '→ '+inner_array[0].to_s,
|
525
|
+
css_class: inner_array[1].to_s
|
526
|
+
)
|
527
|
+
}
|
528
|
+
end
|
529
|
+
# ===================================================================== #
|
530
|
+
# === images
|
531
|
+
#
|
532
|
+
# For reference, an entry matching the following clause may look
|
533
|
+
# like this:
|
534
|
+
#
|
535
|
+
# - PC/HARDWARE/TV/XORO_TV_HTC1546_OUTLETS.jpg
|
536
|
+
# - mar0_3em
|
537
|
+
# - drag_xoro_tv_rückseite
|
538
|
+
#
|
539
|
+
# ===================================================================== #
|
540
|
+
if _.has_key? 'images'
|
541
|
+
_['images'].each {|entry_array, inner_array|
|
542
|
+
img(
|
543
|
+
inner_array[0].to_s,
|
544
|
+
content: inner_array[0].to_s,
|
545
|
+
css_class: inner_array[1].to_s,
|
546
|
+
the_id: inner_array[2].to_s,
|
547
|
+
css_style: inner_array[3].to_s
|
548
|
+
)
|
549
|
+
}
|
550
|
+
end
|
551
|
+
} # this ends the <div> tag.
|
552
|
+
spacer(:middle) # Added this spacer as of August 2014.
|
553
|
+
hr
|
554
|
+
}
|
555
|
+
else
|
556
|
+
e 'No file exists at '+_+'.'
|
557
|
+
end
|
558
|
+
# ========================================================================= #
|
559
|
+
# === Display the final total costs next, close to the end of the web-app
|
560
|
+
# ========================================================================= #
|
561
|
+
display_the_total_costs
|
562
|
+
h3 'Spendings on hardware per year:'
|
563
|
+
hash = HardwareInformation::PurchasedHardware.hash_yearly_purchases_made?
|
564
|
+
result = ''.dup
|
565
|
+
hash.each_pair {|year, cost|
|
566
|
+
cost = cost.round(2)
|
567
|
+
result << string_s2(year.to_s, 'lightblue')+': '+
|
568
|
+
string_s2(cost.to_s.ljust(20,' ')+' Euro', 'gold terminal_font')+'<br>'
|
569
|
+
}
|
570
|
+
p_default(css_class: 'marl3em') {
|
571
|
+
e result
|
572
|
+
}
|
573
|
+
show_the_external_links # Always show the external links.
|
574
|
+
# ========================================================================= #
|
575
|
+
# === Sitemap
|
576
|
+
#
|
577
|
+
# Sitemap Tag. Hier nur Sachen sammeln die halbwegs wichtig sind!
|
578
|
+
# Sonst läppert sich das wie verrückt zusammen.
|
579
|
+
# ========================================================================= #
|
580
|
+
div('wid20 posab pad0_5em BG_BLACK White','',
|
581
|
+
'right: 15%;
|
582
|
+
top: 1.25em;
|
583
|
+
border-radius: 18px;
|
584
|
+
border: 1px dotted slateblue;'){
|
585
|
+
show_local_sitemap
|
586
|
+
}
|
587
|
+
# ========================================================================= #
|
588
|
+
# Eventuell mini-pc kaufen:
|
589
|
+
#
|
590
|
+
# https://liliputing.com/2020/07/asus-pn50-is-a-mini-pc-with-up-to-an-amd-ryzen-7-4800u-processor.html
|
591
|
+
# https://geizhals.at/asus-mini-pc-pn50-v26823.html
|
592
|
+
# https://geizhals.at/asus-mini-pc-pn50-bbr343md-90mr00e1-m00150-a2314947.html
|
593
|
+
# ^^^ 331 Euro am 12.12.2020
|
594
|
+
# ^^^ 328 Euro am 22.01.2021
|
595
|
+
# ^^^ 316 Euro am 31.03.2021
|
596
|
+
# ^^^ etwa 270 Euro November 2023
|
597
|
+
# ========================================================================= #
|
598
|
+
# Oder:
|
599
|
+
#
|
600
|
+
# https://geizhals.at/shuttle-xpc-slim-pos-ds100-pec-ds10u001-a2221818.html?hloc=at
|
601
|
+
#
|
602
|
+
# 4 GIG RAM, 299 Euro.
|
603
|
+
# ========================================================================= #
|
604
|
+
# bl computer_hardware_yaml
|
605
|
+
# ========================================================================= #
|
606
|
+
}}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Encoding: UTF-8
|
3
3
|
# frozen_string_literal: true
|
4
4
|
# =========================================================================== #
|
5
|
-
# http://localhost/programming/ruby/src/hardware_information/lib/hardware_information/www/
|
5
|
+
# http://localhost/programming/ruby/src/hardware_information/lib/hardware_information/www/purchased_hardware/purchased_hardware_for_sinatra.rb
|
6
6
|
# =========================================================================== #
|
7
7
|
require 'cyberweb/and_sinatra_base.rb'
|
8
8
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hardware_information
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.84
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert A. Heiler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colours
|
@@ -58,9 +58,10 @@ files:
|
|
58
58
|
- lib/hardware_information/project/project.rb
|
59
59
|
- lib/hardware_information/version/version.rb
|
60
60
|
- lib/hardware_information/www/embeddable_interface.rb
|
61
|
-
- lib/hardware_information/www/
|
62
|
-
- lib/hardware_information/www/
|
63
|
-
- lib/hardware_information/www/
|
61
|
+
- lib/hardware_information/www/purchased_hardware/README.md
|
62
|
+
- lib/hardware_information/www/purchased_hardware/purchased_hardware.cgi
|
63
|
+
- lib/hardware_information/www/purchased_hardware/purchased_hardware.rb
|
64
|
+
- lib/hardware_information/www/purchased_hardware/purchased_hardware_for_sinatra.rb
|
64
65
|
- lib/hardware_information/yaml/colours_for_the_hardware_information_project.yml
|
65
66
|
- lib/hardware_information/yaml/usb_errors/usb_errors.yml
|
66
67
|
homepage: https://rubygems.org/gems/environment_information
|
@@ -80,9 +81,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
81
|
requirements:
|
81
82
|
- - ">="
|
82
83
|
- !ruby/object:Gem::Version
|
83
|
-
version: 3.4.
|
84
|
+
version: 3.4.22
|
84
85
|
requirements: []
|
85
|
-
rubygems_version: 3.4.
|
86
|
+
rubygems_version: 3.4.22
|
86
87
|
signing_key:
|
87
88
|
specification_version: 4
|
88
89
|
summary: This small class will output Information about your hardware, i.e. the Processor
|