mockba 0.3.1 → 0.3.3

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.
Files changed (4) hide show
  1. package/MOCKBA +4 -1
  2. package/changes.md +5 -1
  3. package/index.js +138 -27
  4. package/package.json +1 -1
package/MOCKBA CHANGED
@@ -23,10 +23,13 @@ if(json) {
23
23
  } else {
24
24
  var москва = new MOCKBA({
25
25
  human:true,
26
+ ...{
27
+ skip:['country','region','location']
28
+ },
26
29
  ...(ru?{
27
30
  skip:['страна','регион','местоположение'],
28
31
  translate:'ru',
29
- }:void 0),
32
+ }:null),
30
33
  })
31
34
  }
32
35
 
package/changes.md CHANGED
@@ -1,6 +1,10 @@
1
1
  ## 30 jan 2026
2
2
 
3
- ### v0.3.1
3
+ ### v0.3.3
4
+
5
+ - print correct format in english
6
+
7
+ ### v0.3.2
4
8
 
5
9
  - print json and js formats, better cli
6
10
  - print each dashboard item in ru
package/index.js CHANGED
@@ -12,38 +12,22 @@ class MOCKBA extends Moskva {
12
12
  // printRu = false
13
13
  human = void 0
14
14
  json = false
15
- skip=[]
15
+ // skip=['country','region','location']
16
16
  период_осреднения=null
17
17
  static get emojiMap() {
18
18
  return new Map(Object.entries({ // does not have default?
19
19
  'страна':'🌍 Страна',
20
20
  'регион':'📍 Регион',
21
21
  'местоположение':'📌 Местоположение',
22
- 'время_наблюдения':'⏰ Дата и время', // units map also?
23
- 'атмосферное_давление_мм_рт_ст':'🌡️ Атм. давление (мм рт.ст.)',
24
- 'температура_°C':'🌡️ Температура (°C)',
25
- 'относительная_влажность_процент':'💧 Влажность (%)',
26
- 'направление_ветра':'🧭 Направление ветра',
27
- 'средняя_скорость_ветра_м_с':'🌬️ Скорость ветра (м/с)',
28
- 'горизонтальная_видимость_км':'👀 Видимость (км)',
29
- 'долгосрочные_наблюдения':'┬ 📈 Долгосрочные наблюдения',
30
- 'мин_температура_°C':'⛄️ Мин. температура (°C)',
31
- 'год_мин_температуры':'☃️ Год мин. температуры',
32
- 'макс_температура_°C':'🥵 Макс. температура (°C)',
33
- 'год_макс_температуры':'🔥 Год макс. температуры',
34
- 'макс_осадки_мм':' 🌧️ Макс. осадки',
35
- 'год_макс_осадков':'🌊 Год макс. осадков',
36
- 'среднемесячные_показатели':'📊 Среднемесячные показатели (январь)',
37
- 'средняя_температура_°C':'🌡️ Средняя температура (°C)',
38
- 'осадки_мм':'🌧️ Осадки (мм)',
39
- 'период_осреднения':'📊 Период осреднения'
22
+ 'время_наблюдения':'⏰ Дата и время',
23
+ 'observation_time':'',
40
24
  }))
41
25
  }
42
26
  printWeather(obj){
43
- return this.printRuWeather(obj)
27
+ return this.printObj(obj,'')
44
28
  }
45
29
  printRuWeather(obj){
46
- this.printObj(obj,'')
30
+ this.printRuObj(obj,'')
47
31
  }
48
32
  tempEmoji(t){
49
33
  if(t<=-20) return '🥶'
@@ -61,9 +45,124 @@ class MOCKBA extends Moskva {
61
45
  }
62
46
 
63
47
  printObj(o,prefix){
48
+ // период_осреднения =
49
+ for(var k in o){
50
+ if(this.skip&&this.skip.includes(k)) {
51
+ continue
52
+ }
53
+ var logNl=console.log
54
+ var log=data=>{
55
+ process.stdout.write(data)
56
+ }
57
+ // var log1=process.stdout.write;
58
+ if(typeof o[k]=='object'&&o[k]!=null){
59
+ switch(k){
60
+ case 'monthly_averages':
61
+ logNl('┬ 📊 Monthly averages since '+o[k].averaging_period+':')
62
+ this.printObj(o[k],prefix+' ')
63
+ break
64
+ case 'long_term_obs':
65
+ logNl('┬ 📈 Long term observations:')
66
+ this.printObj(o[k],prefix+' ')
67
+ break
68
+ default:
69
+ logNl(prefix+(MOCKBA.emojiMap.get(k)||k))
70
+ this.printObj(o[k],prefix+' ')
71
+ }
72
+ } else {
73
+ switch(k){
74
+ case 'avg_temperature_C': // monthly averages group
75
+ var v=o[k]
76
+ logNl('├─🌡️ \tTemperature\t'+v+'°C')
77
+ break
78
+ case 'precipitation_mm':
79
+ logNl('└─ 🌧️ \tPrecipitation\t'+o[k]+'mm')
80
+ break
81
+
82
+ case 'atmospheric_pressure_mm':
83
+ // logNl('🌡️ Атм. давление\t\t'+o[k]+' мм рт.ст.')
84
+ logNl('⬇️ Atm. pressure\t'+o[k]+' mm')
85
+ break
86
+ case 'temperature_C':
87
+ var температура=parseFloat(o[k])
88
+ logNl(this.tempEmoji(температура)+' Temperature\t\t'+температура+'°C')
89
+ break
90
+ case 'averaging_period':
91
+ // this.период_осреднения = o[k]
92
+ // logNl(' 💧 Влажность: '+o[k]+'%')
93
+ break
94
+ case 'relative_humidity_percent':
95
+ logNl('💧 Humidity\t\t'+o[k]+'%')
96
+ break
97
+ case 'horizontal_visibility_km':
98
+ logNl('👀 Visibility\t\t'+o[k]+'km')
99
+ break
100
+ case 'wind_speed_m_s':
101
+ // convert english into ru
102
+ logNl('🌬️ Wind speed\t\t'+o[k]+' m/s')
103
+ break
104
+ case 'wind_direction':
105
+ var windMap={
106
+ // N:'северный',
107
+ // NNE:'северо-северо-восточный',
108
+ // NE:'северо-восточный',
109
+ // ENE:'вост.-сев.-восточный',
110
+ // E:'восточный',
111
+ // ESE:'вост.-юго-восточный',
112
+ // SE:'юго-восточный',
113
+ // SSE:'юго-юго-восточный',
114
+ // S:'южный',
115
+ // SSW:'юго-юго-западный',
116
+ // SW:'юго-западный',
117
+ // WSW:'зап.-юго-западный',
118
+ // W:'западный',
119
+ // WNW:'зап.-сев.-западный',
120
+ // NW:'северо-западный',
121
+ // NNW:'сев.-сев.-западный'
122
+ }
123
+ // convert english into ru
124
+ // var V=o[k]
125
+ var V=o[k]
126
+ var ru=windMap[V]||V
127
+ logNl('🧭 Wind\t\t\t'+ru)
128
+ break
129
+ case 'observation_time':
130
+ let d_val=this.parseDate(o[k]) // store date on this
131
+ let val=this.printDate(d_val);
132
+ // logNl(prefix+(MOCKBA.emojiMap.get(k)||k)+'\t\t'+val)
133
+ logNl(prefix+(MOCKBA.emojiMap.get('observation_time')+' Date and time')+'\t'+val)
134
+ break
135
+ case 'max_temperature': // need to see when was min
136
+ // let d_val=this.parseDate(o[k]) // store date on this
137
+ var V=`${o[k]}`.padStart(5,' ')
138
+ log('├─ 🥵\t'+V+'°C')
139
+ break
140
+ case 'max_precipitation_mm':
141
+ var V=`+${o[k]}`.padStart(5,' ')
142
+ log('└─ 🌧️ \t'+V+'mm')
143
+ break
144
+ case 'min_temperature':
145
+ var V=`${o[k]}`.padStart(4,' ')
146
+ log('├─ ⛄️\t'+V+'°C')
147
+ break
148
+ case 'min_temp_year':
149
+ case 'max_temp_year':
150
+ case 'max_precip_year':
151
+ log(' in '+o[k])
152
+ let y_val=this.yearsAgo(o[k])
153
+ logNl(', '+y_val+' years ago')
154
+ break
155
+ default:
156
+ logNl(prefix+(MOCKBA.emojiMap.get(k)||k)+': '+o[k])
157
+ }
158
+ }
159
+ }
160
+ }
161
+
162
+ printRuObj(o,prefix){
64
163
  // период_осреднения =
65
164
  for(var k in o){
66
- if(this.skip.includes(k)) {
165
+ if(this.skip&&this.skip.includes(k)) {
67
166
  continue
68
167
  }
69
168
  var logNl=console.log
@@ -76,11 +175,11 @@ class MOCKBA extends Moskva {
76
175
  switch(k){
77
176
  case 'среднемесячные_показатели':
78
177
  logNl('┬ 📊 Среднемесячные показатели с '+o[k].период_осреднения+':')
79
- this.printObj(o[k],prefix+' ')
178
+ this.printRuObj(o[k],prefix+' ')
80
179
  break
81
180
  default:
82
181
  logNl(prefix+(MOCKBA.emojiMap.get(k)||k))
83
- this.printObj(o[k],prefix+' ')
182
+ this.printRuObj(o[k],prefix+' ')
84
183
  }
85
184
  // logNl(prefix+(MOCKBA.emojiMap.get(k)||k)+':')
86
185
  }else{
@@ -178,6 +277,14 @@ class MOCKBA extends Moskva {
178
277
  }
179
278
 
180
279
  /** --- @arg {Date} _val */
280
+ printDate(_val){
281
+ var val=_val?_val.toLocaleString('en',{
282
+ year:'numeric',month:'short',day:'2-digit',hour:'numeric',
283
+ hour12:true,
284
+ }):_val
285
+ val=val.replace(',','')
286
+ return val
287
+ }
181
288
  printDateRu(_val){
182
289
  var val=_val?_val.toLocaleString('ru',{
183
290
  year:'numeric',month:'short',day:'2-digit',hour:'2-digit',minute:'2-digit',
@@ -198,7 +305,11 @@ class MOCKBA extends Moskva {
198
305
  super._log=true
199
306
  }
200
307
  if(!this.disableIndicator) {
201
- var t = await indicatrix('Загружаем данные по Москве',super.fetchMoscow())
308
+ if(this.translate=='ru') {
309
+ var t = await indicatrix('Загружаем данные по Москве',super.fetchMoscow())
310
+ }else {
311
+ var t = await indicatrix('Loading data for Moscow',super.fetchMoscow())
312
+ }
202
313
  }else {
203
314
  var t = await super.fetchMoscow()
204
315
  }
@@ -293,7 +404,7 @@ class MOCKBA extends Moskva {
293
404
  }
294
405
 
295
406
  var monthly_averages = {
296
- temperature_C: parseFloat(matchSingle(/<td>Temperature<\/td><td[^>]*>([^&]+)/i, html)),
407
+ avg_temperature_C: parseFloat(matchSingle(/<td>Temperature<\/td><td[^>]*>([^&]+)/i, html)),
297
408
  precipitation_mm: parseFloat(matchSingle(/<td>Amount of precipitation<\/td><td[^>]*>([^ ]+)/i, html)),
298
409
  averaging_period: matchSingle(/The averaging period: ([^<]+)/i, html)
299
410
  }
@@ -332,7 +443,7 @@ class MOCKBA extends Moskva {
332
443
  max_precip_year:'год_макс_осадков'
333
444
  },
334
445
  monthly_averages:{
335
- temperature_C:'средняя_температура_°C',
446
+ avg_temperature_C:'средняя_температура_°C',
336
447
  precipitation_mm:'осадки_мм',
337
448
  averaging_period:'период_осреднения'
338
449
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mockba",
3
3
  "homepage": "https://рантайм.москва",
4
- "version": "0.3.1",
4
+ "version": "0.3.3",
5
5
  "license": "CC-BY-ND-4.0",
6
6
  "dependencies": {
7
7
  "indicatrix": "^1.4.1",