cbcore-ts 1.0.0

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 (39) hide show
  1. package/.idea/misc.xml +6 -0
  2. package/.idea/modules.xml +8 -0
  3. package/.idea/uicore.iml +9 -0
  4. package/.idea/vcs.xml +6 -0
  5. package/.jshintrc +4 -0
  6. package/LICENSE +21 -0
  7. package/README.md +5 -0
  8. package/compiledScripts/CBCore.d.ts +54 -0
  9. package/compiledScripts/CBCore.js +182 -0
  10. package/compiledScripts/CBCore.js.map +7 -0
  11. package/compiledScripts/CBDataInterfaces.d.ts +156 -0
  12. package/compiledScripts/CBDataInterfaces.js +35 -0
  13. package/compiledScripts/CBDataInterfaces.js.map +7 -0
  14. package/compiledScripts/CBLanguageService.d.ts +43 -0
  15. package/compiledScripts/CBLanguageService.js +167 -0
  16. package/compiledScripts/CBLanguageService.js.map +7 -0
  17. package/compiledScripts/CBServerClient.d.ts +10 -0
  18. package/compiledScripts/CBServerClient.js +88 -0
  19. package/compiledScripts/CBServerClient.js.map +7 -0
  20. package/compiledScripts/CBSocketCallbackHolder.d.ts +65 -0
  21. package/compiledScripts/CBSocketCallbackHolder.js +343 -0
  22. package/compiledScripts/CBSocketCallbackHolder.js.map +7 -0
  23. package/compiledScripts/CBSocketClient.d.ts +70 -0
  24. package/compiledScripts/CBSocketClient.js +371 -0
  25. package/compiledScripts/CBSocketClient.js.map +7 -0
  26. package/compiledScripts/index.d.ts +6 -0
  27. package/compiledScripts/index.js +23 -0
  28. package/compiledScripts/index.js.map +7 -0
  29. package/etsc.config.mjs +23 -0
  30. package/package.json +51 -0
  31. package/rollup.config.js +49 -0
  32. package/scripts/CBCore.ts +381 -0
  33. package/scripts/CBDataInterfaces.ts +336 -0
  34. package/scripts/CBLanguageService.ts +371 -0
  35. package/scripts/CBServerClient.ts +147 -0
  36. package/scripts/CBSocketCallbackHolder.ts +872 -0
  37. package/scripts/CBSocketClient.ts +748 -0
  38. package/scripts/index.ts +18 -0
  39. package/tsconfig.json +69 -0
@@ -0,0 +1,371 @@
1
+ import {
2
+ FIRST_OR_NIL,
3
+ IS,
4
+ IS_DEFINED,
5
+ IS_NOT,
6
+ nil,
7
+ UICore,
8
+ UILanguageService,
9
+ UILocalizedTextObject,
10
+ UIRoute,
11
+ UIView
12
+ } from "uicore-ts"
13
+ import { CBCore } from "./CBCore"
14
+ import { CBLocalizedTextObject } from "./CBDataInterfaces"
15
+
16
+
17
+ export interface ParticularLanguageValues {
18
+
19
+ [x: string]: string
20
+
21
+ topBarTitle: string;
22
+ selectLanguageTitle: string;
23
+ languageNameShort: string;
24
+ leftBarTitle: string;
25
+ languageName: string
26
+
27
+ }
28
+
29
+
30
+ export interface LanguageValues {
31
+
32
+ [x: string]: ParticularLanguageValues
33
+
34
+ en: ParticularLanguageValues
35
+ est: ParticularLanguageValues
36
+
37
+ }
38
+
39
+
40
+ export class CBLanguageService implements UILanguageService {
41
+
42
+ static _currentLanguageKey: string
43
+
44
+ static languageValues: LanguageValues = {
45
+
46
+ en: {
47
+
48
+ languageName: "English",
49
+ languageNameShort: "ENG",
50
+
51
+ topBarTitle: "UICore application",
52
+
53
+ selectLanguageTitle: "Select language",
54
+ leftBarTitle: "Title"
55
+
56
+
57
+ },
58
+ est: {
59
+
60
+ languageName: "Eesti keel",
61
+ languageNameShort: "EST",
62
+
63
+ topBarTitle: "UICore rakendus",
64
+
65
+ selectLanguageTitle: "Vali keel",
66
+ leftBarTitle: "Pealkiri"
67
+
68
+
69
+ }
70
+
71
+
72
+
73
+
74
+ }
75
+
76
+ static languages = JSON.parse(JSON.stringify(CBLanguageService.languageValues))
77
+
78
+ static useStoredLanguageValues(values = {}) {
79
+
80
+ const result = JSON.parse(JSON.stringify(CBLanguageService.languageValues))
81
+ .objectByCopyingValuesRecursivelyFromObject(
82
+ values) as any
83
+
84
+ if (JSON.stringify(result) != JSON.stringify(CBLanguageService.languages)) {
85
+
86
+ CBLanguageService.languages = result
87
+
88
+ CBLanguageService.broadcastLanguageChangeEvent()
89
+
90
+ }
91
+
92
+ }
93
+
94
+
95
+ static broadcastLanguageChangeEvent(view?: UIView) {
96
+
97
+ view = view as any || CBCore.sharedInstance.viewCores.everyElement.rootViewController.view.rootView as any
98
+
99
+ view.broadcastEventInSubtree({
100
+ name: UIView.broadcastEventName.LanguageChanged,
101
+ parameters: {}
102
+ })
103
+
104
+ }
105
+
106
+ static get defaultLanguageKey() {
107
+
108
+ // @ts-ignore
109
+ return (CBCoreInitializerObject.defaultLanguageKey || "en")
110
+
111
+ }
112
+
113
+ static get currentLanguageKey() {
114
+
115
+ if (!CBLanguageService._currentLanguageKey) {
116
+
117
+ CBLanguageService.updateCurrentLanguageKey()
118
+
119
+ }
120
+
121
+ return CBLanguageService._currentLanguageKey
122
+
123
+ }
124
+
125
+ updateCurrentLanguageKey() {
126
+
127
+ CBLanguageService.updateCurrentLanguageKey()
128
+
129
+ }
130
+
131
+ static updateCurrentLanguageKey(route = UIRoute.currentRoute) {
132
+
133
+ let result = route.componentWithName("settings").parameters.language
134
+
135
+ if (IS_NOT(result)) {
136
+
137
+ result = CBLanguageService.defaultLanguageKey
138
+
139
+ }
140
+
141
+ const isChanged = (result != CBLanguageService._currentLanguageKey)
142
+
143
+ CBLanguageService._currentLanguageKey = result
144
+
145
+ if (isChanged) {
146
+
147
+ CBCore.sharedInstance.languageKey = result
148
+
149
+ CBLanguageService.broadcastLanguageChangeEvent()
150
+
151
+ }
152
+
153
+ }
154
+
155
+ get currentLanguageKey() {
156
+
157
+ const result = CBLanguageService.currentLanguageKey
158
+
159
+ return result
160
+
161
+ }
162
+
163
+
164
+
165
+ static stringForKey(
166
+ key: string,
167
+ languageKey: string,
168
+ defaultString: string,
169
+ parameters?: { [x: string]: string | UILocalizedTextObject; }
170
+ ) {
171
+
172
+ var result
173
+
174
+ if (IS(key) && CBLanguageService.languages[languageKey] &&
175
+ IS_DEFINED(CBLanguageService.languages[languageKey][key])) {
176
+
177
+ result = CBLanguageService.languages[languageKey][key]
178
+
179
+ }
180
+ else {
181
+
182
+ result = defaultString
183
+
184
+ }
185
+
186
+ if (IS(parameters)) {
187
+
188
+ const parameterKeys = Object.keys(parameters)
189
+
190
+ parameterKeys.forEach(function (key, index, array) {
191
+
192
+ const keyString = "%" + key + "%"
193
+
194
+ const parameter = parameters[key]
195
+
196
+ var parameterString
197
+
198
+ if (parameter instanceof Object) {
199
+
200
+ parameterString = UICore.languageService.stringForCurrentLanguage(parameter as UILocalizedTextObject)
201
+
202
+ }
203
+ else {
204
+
205
+ parameterString = parameter
206
+
207
+ }
208
+
209
+
210
+ result = result.replace(new RegExp(keyString, "g"), parameterString)
211
+
212
+ })
213
+
214
+ }
215
+
216
+ return result
217
+
218
+ }
219
+
220
+ stringForKey(
221
+ key: string,
222
+ languageKey: string,
223
+ defaultString: string,
224
+ parameters?: { [x: string]: string | UILocalizedTextObject; }
225
+ ) {
226
+
227
+
228
+ return CBLanguageService.stringForKey(key, languageKey, defaultString, parameters)
229
+
230
+
231
+ }
232
+
233
+
234
+ static localizedTextObjectForKey(
235
+ key: string,
236
+ defaultString = key,
237
+ parameters?: { [x: string]: string | UILocalizedTextObject; }
238
+ ) {
239
+
240
+ const result = {}
241
+
242
+ CBLanguageService.languages.forEach(function (languageObject, languageKey) {
243
+
244
+ result[languageKey] = CBLanguageService.stringForKey(key, languageKey, defaultString, parameters)
245
+
246
+ })
247
+
248
+ return result
249
+
250
+ }
251
+
252
+ localizedTextObjectForKey(
253
+ key: string,
254
+ defaultString?: string,
255
+ parameters?: { [x: string]: string | UILocalizedTextObject; }
256
+ ) {
257
+
258
+ const result = CBLanguageService.localizedTextObjectForKey(key, defaultString, parameters)
259
+
260
+ return result
261
+
262
+ }
263
+
264
+
265
+ static localizedTextObjectForText(text: string) {
266
+
267
+ if (IS_NOT(text)) {
268
+
269
+ return nil
270
+
271
+ }
272
+
273
+ const result = {
274
+
275
+ [CBLanguageService.defaultLanguageKey]: text
276
+
277
+ }
278
+
279
+ return result
280
+
281
+ }
282
+
283
+ localizedTextObjectForText(text: string) {
284
+
285
+ const result = CBLanguageService.localizedTextObjectForText(text)
286
+
287
+ return result
288
+
289
+ }
290
+
291
+
292
+ static stringForCurrentLanguage(localizedTextObject: CBLocalizedTextObject | string) {
293
+
294
+ if (!CBLanguageService || !localizedTextObject) {
295
+
296
+ const asd = 1
297
+
298
+ }
299
+
300
+ if (localizedTextObject === "" + localizedTextObject) {
301
+
302
+ return localizedTextObject
303
+
304
+ }
305
+
306
+ localizedTextObject = FIRST_OR_NIL(localizedTextObject)
307
+
308
+ var result = localizedTextObject[CBLanguageService.currentLanguageKey]
309
+
310
+ if (IS_NOT(result)) {
311
+
312
+ result = localizedTextObject[CBLanguageService.defaultLanguageKey]
313
+
314
+ }
315
+
316
+ if (IS_NOT(result)) {
317
+
318
+ result = localizedTextObject["en"]
319
+
320
+ }
321
+
322
+ if (IS_NOT(result)) {
323
+
324
+ result = ""
325
+
326
+ }
327
+
328
+ return result
329
+
330
+ }
331
+
332
+ stringForCurrentLanguage(localizedTextObject: CBLocalizedTextObject) {
333
+
334
+ return CBLanguageService.stringForCurrentLanguage(localizedTextObject)
335
+
336
+ }
337
+
338
+
339
+
340
+
341
+ }
342
+
343
+
344
+ UICore.languageService = CBLanguageService
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+
368
+
369
+
370
+
371
+
@@ -0,0 +1,147 @@
1
+ import { IS, nil, UIObject, YES } from "../../uicore-ts"
2
+ import { CBCore } from "./CBCore"
3
+
4
+
5
+ export class CBServerClient extends UIObject {
6
+
7
+ _core: CBCore
8
+
9
+ constructor(core: CBCore) {
10
+
11
+ super()
12
+
13
+ this._core = core
14
+
15
+ }
16
+
17
+
18
+ sendJSONObject(URL: string, objectToSend: any, completion: (response: any) => void) {
19
+
20
+ this.sendRequest("POST", URL, objectToSend, function (this: CBServerClient, status, response) {
21
+ if (status != 200) {
22
+
23
+ console.log("GET " + URL + " " + status)
24
+
25
+ if (IS(completion)) {
26
+ completion(nil)
27
+ }
28
+ return
29
+ }
30
+ const result = JSON.parse(response)
31
+
32
+ if (IS(completion)) {
33
+ completion(result)
34
+ }
35
+ }.bind(this))
36
+
37
+ }
38
+
39
+ retrieveJSONObject(URL: string, completion: (response: any) => void) {
40
+
41
+ this.retrieveJSONObjectWithCaching(URL, nil, nil, YES, completion)
42
+
43
+ }
44
+
45
+ retrieveJSONObjectWithCaching(
46
+ URL: string,
47
+ cacheObject: any,
48
+ cacheKey: string,
49
+ forceUpdate: boolean,
50
+ completion: (response: any) => void
51
+ ) {
52
+ if (IS(cacheObject[cacheKey]) && !forceUpdate) {
53
+ if (IS(completion)) {
54
+ completion(cacheObject[cacheKey])
55
+ }
56
+ return
57
+ }
58
+ this.sendRequest("GET", URL, null, function (this: CBServerClient, status, response) {
59
+ if (status != 200) {
60
+
61
+ console.log("GET " + URL + " " + status)
62
+
63
+ if (IS(completion)) {
64
+ completion(nil)
65
+ }
66
+ return
67
+ }
68
+ const result = JSON.parse(response)
69
+ cacheObject[cacheKey] = result
70
+ if (IS(completion)) {
71
+ completion(result)
72
+ }
73
+ }.bind(this))
74
+ }
75
+
76
+ sendRequest(method: string, URL: string, data: any, completion: (status: number, response: string) => void) {
77
+
78
+ const xhr = new XMLHttpRequest()
79
+ xhr.open(method, URL, true)
80
+ xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8")
81
+ xhr.onreadystatechange = processRequest
82
+
83
+ function processRequest(event: Event) {
84
+
85
+ if (xhr.readyState == 4) {
86
+ if (IS(completion)) {
87
+ completion(xhr.status, xhr.responseText)
88
+ }
89
+ }
90
+
91
+ }
92
+
93
+ xhr.send(JSON.stringify(data))
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
+