iobroker.fullcalendar 1.1.0 → 1.2.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.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  CC BY-NC 4.0
2
2
 
3
- Copyright (c) 2017-2020 bluefox <dogafox@gmail.com>
3
+ Copyright (c) 2017-2021 bluefox <dogafox@gmail.com>
4
4
 
5
5
  Creative Commons Attribution-NonCommercial 4.0 International Public License
6
6
 
package/README.md CHANGED
@@ -8,15 +8,22 @@
8
8
 
9
9
  Schedules with [fullcalendar](https://fullcalendar.io).
10
10
 
11
- You must not use any external resources, the scheduling is processed only in ioBroker and will be not combined with any external services like "google calender" or "iTunes".
11
+ You must not use any external resources, the scheduling is processed only in ioBroker and will be not combined with any external services like "google calendar" or "iTunes".
12
12
 
13
13
  ![Example](img/example.png)
14
14
 
15
- You can control your events with calender and can plan to control them periodically.
15
+ You can control your events with calendar and can plan to control them periodically.
16
16
 
17
+ <!--
18
+ Placeholder for the next version (at the beginning of the line):
19
+ ### __WORK IN PROGRESS__
20
+ -->
17
21
  ## Changelog
22
+ ### 1.2.0 (2021-12-14)
23
+ * (bluefox) Updated to use with js-controller 3.3 and admin 5
24
+
18
25
  ### 1.1.0 (2020-01-12)
19
- * (foxriver76) Updated to use with js-controller 2.x
26
+ * (foxriver76) Updated to use with js-controller 2.x
20
27
 
21
28
  ### 1.0.0 (2019-11-17)
22
29
  * (bluefox) Support of compact mode added
@@ -40,8 +47,7 @@ You can control your events with calender and can plan to control them periodica
40
47
  ### 0.1.0 (2017-03-20)
41
48
  * (bluefox) initial commit
42
49
 
43
-
44
50
  ## License
45
51
  CC BY-NC 4.0
46
52
 
47
- Copyright (c) 2017-2020 bluefox <dogafox@gmail.com>
53
+ Copyright (c) 2017-2021 bluefox <dogafox@gmail.com>
@@ -3,7 +3,8 @@ var parts = path.split('/');
3
3
  parts.splice(-3);
4
4
 
5
5
  var socket = io.connect('/', {path: parts.join('/') + '/socket.io'});
6
- var instance = window.location.search.slice(1) || 0;
6
+ var query = (window.location.search || '').replace(/^\?/, '').replace(/#.*$/, '');
7
+ var args = {};
7
8
  var common = null; // common information of adapter
8
9
  var host = null; // host object on which the adapter runs
9
10
  var changed = false;
@@ -14,11 +15,33 @@ var onChangeSupported = false;
14
15
 
15
16
  var tmp = window.location.pathname.split('/');
16
17
  adapter = tmp[tmp.length - 2];
18
+
19
+ // parse parameters
20
+ query.trim().split('&').filter(function (t) {return t.trim();}).forEach(function (b, i) {
21
+ const parts = b.split('=');
22
+ if (!i && parts.length === 1 && !isNaN(parseInt(b, 10))) {
23
+ args.instance = parseInt(b, 10);
24
+ }
25
+ var name = parts[0];
26
+ args[name] = parts.length === 2 ? parts[1] : true;
27
+
28
+ if (name === 'instance') {
29
+ args.instance = parseInt( args.instance, 10) || 0;
30
+ }
31
+
32
+ if (args[name] === 'true') {
33
+ args[name] = true;
34
+ } else if (args[name] === 'false') {
35
+ args[name] = false;
36
+ }
37
+ });
38
+ var instance = args.instance;
39
+
17
40
  var _adapterInstance = 'system.adapter.' + adapter + '.' + instance;
18
41
 
19
42
  $(document).ready(function () {
20
43
  'use strict';
21
-
44
+
22
45
  if (typeof noConfigDialog === 'undefined') {
23
46
  // Extend dictionary with standard words for adapter
24
47
  if (typeof systemDictionary === 'undefined') systemDictionary = {};
@@ -90,7 +113,7 @@ $(document).ready(function () {
90
113
  }
91
114
  });
92
115
  }
93
-
116
+
94
117
  // callback if something changed
95
118
  function onChange(isChanged) {
96
119
  onChangeSupported = true;
@@ -515,7 +538,9 @@ function sendToHost(host, command, message, callback) {
515
538
  function fillSelectCertificates(id, type, actualValued) {
516
539
  var str = '<option value="">' + _('none') + '</option>';
517
540
  for (var i = 0; i < certs.length; i++) {
518
- if (certs[i].type != type) continue;
541
+ if (certs[i].type != type) {
542
+ continue;
543
+ }
519
544
  str += '<option value="' + certs[i].name + '" ' + ((certs[i].name === actualValued) ? 'selected' : '') + '>' + certs[i].name + '</option>';
520
545
  }
521
546
 
package/admin/tab.html CHANGED
@@ -331,7 +331,7 @@
331
331
  } else {
332
332
  delete event.native.astro;
333
333
  delete event.native.offset;
334
-
334
+
335
335
  // extract time
336
336
  time = checkTime($dialog.find('#dialog_event_time').val());
337
337
  if (typeof time === 'string') {
@@ -1050,7 +1050,9 @@
1050
1050
  }
1051
1051
 
1052
1052
  function initSelectId(callback) {
1053
- if (selectId) return selectId;
1053
+ if (selectId) {
1054
+ return selectId;
1055
+ }
1054
1056
  selectId = $('#dialog-select-member').selectId('init', {
1055
1057
  objects: objects,
1056
1058
  states: states,
package/io-package.json CHANGED
@@ -1,167 +1,172 @@
1
1
  {
2
- "common": {
3
- "name": "fullcalendar",
4
- "version": "1.1.0",
5
- "news": {
6
- "1.1.0": {
7
- "en": "Updated to use with js-controller 2.x",
8
- "de": "Aktualisiert zur Verwendung mit js-controller 2.x",
9
- "ru": "Обновлен для использования с js-controller 2.x",
10
- "pt": "Atualizado para uso com o js-controller 2.x",
11
- "nl": "Bijgewerkt voor gebruik met js-controller 2.x",
12
- "fr": "Mis à jour pour être utilisé avec js-controller 2.x",
13
- "it": "Aggiornato per l'uso con js-controller 2.x",
14
- "es": "Actualizado para usar con js-controller 2.x",
15
- "pl": "Zaktualizowano do użytku z js-kontrolerem 2.x",
16
- "zh-cn": "更新为与js-controller 2.x一起使用"
17
- },
18
- "1.0.0": {
19
- "en": "Support of compact mode added",
20
- "de": "Unterstützung des Kompaktmodus hinzugefügt",
21
- "ru": "Добавлена поддержка компактного режима",
22
- "pt": "Adicionado suporte ao modo compacto",
23
- "nl": "Ondersteuning van compacte modus toegevoegd",
24
- "fr": "Prise en charge du mode compact ajouté",
25
- "it": "Supporto della modalità compatta aggiunto",
26
- "es": "Soporte de modo compacto agregado",
27
- "pl": "Dodano obsługę trybu kompaktowego",
28
- "zh-cn": "支持紧凑模式"
29
- },
30
- "0.2.4": {
31
- "en": "Translations",
32
- "de": "Übersetzungen",
33
- "ru": "Поправлен перевод"
34
- },
35
- "0.2.3": {
36
- "en": "Fix interval settings\nUpdate fullcalendar library",
37
- "de": "Intervalleinstellungen korrigiert\nUpdate fullcalendar library",
38
- "ru": "Исправлена ошибка с интервалом\nОбновлена библиотека fullcalendar"
39
- }
40
- },
41
- "title": "Calendar schedule",
42
- "titleLang": {
43
- "en": "Calendar schedule",
44
- "de": "Kalender Zeitplan",
45
- "ru": "Календарное расписание",
46
- "pt": "Agenda do calendário",
47
- "nl": "Kalender schema",
48
- "fr": "Calendrier calendrier",
49
- "it": "Calendario",
50
- "es": "Calendario calendario",
51
- "pl": "Harmonogram kalendarza",
52
- "zh-cn": "日历时间表"
53
- },
54
- "desc": {
55
- "en": "This adapter allows planing with calendar",
56
- "de": "Adapter für geplante Aktionen in ioBroker mittels Kalender",
57
- "ru": "Драйвер позволяет планировать с помощью календаря",
58
- "pt": "Este adaptador permite aplainar com calendário",
59
- "nl": "Met deze adapter kunt u schaven met kalender",
60
- "fr": "Cet adaptateur permet de planifier avec calendrier",
61
- "it": "Questo adattatore consente la piallatura con calendario",
62
- "es": "Este adaptador permite planear con calendario",
63
- "pl": "Ten adapter umożliwia struganie za pomocą kalendarza",
64
- "zh-cn": "该适配器允许日历计划"
65
- },
66
- "authors": [
67
- "bluefox <dogafox@gmail.com>"
68
- ],
69
- "license": "CC BY-NC 4.0",
70
- "platform": "javascript/Node.js",
71
- "icon": "fullcalendar.png",
72
- "mode": "daemon",
73
- "compact": true,
74
- "keywords": [
75
- "schedule",
76
- "calendar"
77
- ],
78
- "materialize": true,
79
- "messagebox": true,
80
- "extIcon": "https://raw.githubusercontent.com/ioBroker/ioBroker.fullcalendar/master/admin/fullcalendar.png",
81
- "readme": "https://github.com/ioBroker/ioBroker.fullcalendar/blob/master/README.md",
82
- "loglevel": "info",
83
- "adminTab": {
84
- "singleton": false,
85
- "name": "Calendar",
86
- "fa-icon": "calendar_today"
87
- },
88
- "dependencies": [
89
- {
90
- "admin": ">=2.0.0"
91
- },
92
- {
93
- "js-controller": ">=2.0.0"
94
- }
95
- ],
96
- "enabled": true,
97
- "type": "date-and-time",
98
- "noConfig": false
2
+ "common": {
3
+ "name": "fullcalendar",
4
+ "version": "1.2.0",
5
+ "news": {
6
+ "1.2.0": {
7
+ "en": "Updated to use with js-controller 3.3 and admin 5",
8
+ "de": "Aktualisiert für die Verwendung mit js-controller 3.3 und admin 5",
9
+ "ru": "Обновлено для использования с js-controller 3.3 и admin 5",
10
+ "pt": "Atualizado para usar com js-controller 3.3 e admin 5",
11
+ "nl": "Bijgewerkt voor gebruik met js-controller 3.3 en admin 5",
12
+ "fr": "Mis à jour pour être utilisé avec js-controller 3.3 et admin 5",
13
+ "it": "Aggiornato per l'uso con js-controller 3.3 e admin 5",
14
+ "es": "Actualizado para usar con js-controller 3.3 y admin 5",
15
+ "pl": "Zaktualizowano do użycia z js-controller 3.3 i administratorem 5",
16
+ "zh-cn": "更新为与 js-controller 3.3 和 admin 5 一起使用"
17
+ },
18
+ "1.1.0": {
19
+ "en": "Updated to use with js-controller 2.x",
20
+ "de": "Aktualisiert zur Verwendung mit js-controller 2.x",
21
+ "ru": "Обновлен для использования с js-controller 2.x",
22
+ "pt": "Atualizado para uso com o js-controller 2.x",
23
+ "nl": "Bijgewerkt voor gebruik met js-controller 2.x",
24
+ "fr": "Mis à jour pour être utilisé avec js-controller 2.x",
25
+ "it": "Aggiornato per l'uso con js-controller 2.x",
26
+ "es": "Actualizado para usar con js-controller 2.x",
27
+ "pl": "Zaktualizowano do użytku z js-kontrolerem 2.x",
28
+ "zh-cn": "更新为与js-controller 2.x一起使用"
29
+ },
30
+ "1.0.0": {
31
+ "en": "Support of compact mode added",
32
+ "de": "Unterstützung des Kompaktmodus hinzugefügt",
33
+ "ru": "Добавлена поддержка компактного режима",
34
+ "pt": "Adicionado suporte ao modo compacto",
35
+ "nl": "Ondersteuning van compacte modus toegevoegd",
36
+ "fr": "Prise en charge du mode compact ajouté",
37
+ "it": "Supporto della modalità compatta aggiunto",
38
+ "es": "Soporte de modo compacto agregado",
39
+ "pl": "Dodano obsługę trybu kompaktowego",
40
+ "zh-cn": "支持紧凑模式"
41
+ },
42
+ "0.2.4": {
43
+ "en": "Translations",
44
+ "de": "Übersetzungen",
45
+ "ru": "Поправлен перевод"
46
+ },
47
+ "0.2.3": {
48
+ "en": "Fix interval settings\nUpdate fullcalendar library",
49
+ "de": "Intervalleinstellungen korrigiert\nUpdate fullcalendar library",
50
+ "ru": "Исправлена ошибка с интервалом\nОбновлена библиотека fullcalendar"
51
+ }
99
52
  },
100
- "native": {
101
- "debounce": 1000,
102
- "changesRelogInterval": 0,
103
- "ackType": "any",
104
- "changesMinDelta": 0,
105
- "allEventsEnabled": false,
106
- "allEventsMax": 1000,
107
- "allEventsSaveOnDisk": false,
108
- "eventsPath": "calendar/",
109
- "cfgEventsEnabled": true,
110
- "cfgEventsMax": 1000,
111
- "cfgEventsSaveOnDisk": false
53
+ "title": "Calendar schedule",
54
+ "titleLang": {
55
+ "en": "Calendar schedule",
56
+ "de": "Kalender Zeitplan",
57
+ "ru": "Календарное расписание",
58
+ "pt": "Agenda do calendário",
59
+ "nl": "Kalender schema",
60
+ "fr": "Calendrier calendrier",
61
+ "it": "Calendario",
62
+ "es": "Calendario calendario",
63
+ "pl": "Harmonogram kalendarza",
64
+ "zh-cn": "日历时间表"
112
65
  },
113
- "instanceObjects": [
114
- {
115
- "_id": "info",
116
- "type": "channel",
117
- "common": {
118
- "name": "Information"
119
- },
120
- "native": {}
121
- },
122
- {
123
- "_id": "info.lastConfiguredEvent",
124
- "type": "state",
125
- "common": {
126
- "role": "state",
127
- "name": "Last configured event",
128
- "type": "json",
129
- "read": true,
130
- "write": false
131
- },
132
- "native": {}
133
- },
134
- {
135
- "_id": "info.lastEvent",
136
- "type": "state",
137
- "common": {
138
- "role": "state",
139
- "name": "Any last event",
140
- "type": "json",
141
- "read": true,
142
- "write": false
143
- },
144
- "native": {}
145
- }
66
+ "desc": {
67
+ "en": "This adapter allows planing with calendar",
68
+ "de": "Adapter für geplante Aktionen in ioBroker mittels Kalender",
69
+ "ru": "Драйвер позволяет планировать с помощью календаря",
70
+ "pt": "Este adaptador permite aplainar com calendário",
71
+ "nl": "Met deze adapter kunt u schaven met kalender",
72
+ "fr": "Cet adaptateur permet de planifier avec calendrier",
73
+ "it": "Questo adattatore consente la piallatura con calendario",
74
+ "es": "Este adaptador permite planear con calendario",
75
+ "pl": "Ten adapter umożliwia struganie za pomocą kalendarza",
76
+ "zh-cn": "该适配器允许日历计划"
77
+ },
78
+ "authors": [
79
+ "bluefox <dogafox@gmail.com>"
146
80
  ],
147
- "objects": [
148
- {
149
- "_id": "_design/schedule",
150
- "language": "javascript",
151
- "views": {
152
- "schedule": {
153
- "map": "function(doc) { if (doc.type === 'schedule') emit(doc.common.name, doc); }"
154
- }
155
- }
156
- },
157
- {
158
- "_id": "_design/custom",
159
- "language": "javascript",
160
- "views": {
161
- "state": {
162
- "map": "function (doc) { if (doc.type === 'state' && doc.common && doc.common.custom) emit(doc._id, doc.common.custom) }"
163
- }
164
- }
81
+ "license": "CC-BY-NC-4.0",
82
+ "platform": "Javascript/Node.js",
83
+ "icon": "fullcalendar.png",
84
+ "mode": "daemon",
85
+ "compact": true,
86
+ "keywords": [
87
+ "schedule",
88
+ "calendar"
89
+ ],
90
+ "materialize": true,
91
+ "messagebox": true,
92
+ "extIcon": "https://raw.githubusercontent.com/ioBroker/ioBroker.fullcalendar/master/admin/fullcalendar.png",
93
+ "readme": "https://github.com/ioBroker/ioBroker.fullcalendar/blob/master/README.md",
94
+ "loglevel": "info",
95
+ "adminTab": {
96
+ "singleton": false,
97
+ "name": "Calendar",
98
+ "fa-icon": "calendar_today"
99
+ },
100
+ "dependencies": [
101
+ {
102
+ "js-controller": ">=3.3.0"
103
+ }
104
+ ],
105
+ "enabled": true,
106
+ "type": "date-and-time",
107
+ "noConfig": false,
108
+ "plugins": {
109
+ "sentry": {
110
+ "dsn": "https://89d6f43ab4b5424785f6454d630c3286@sentry.iobroker.net/164"
111
+ }
112
+ }
113
+ },
114
+ "native": {
115
+ "debounce": 1000,
116
+ "changesRelogInterval": 0,
117
+ "ackType": "any",
118
+ "changesMinDelta": 0,
119
+ "allEventsEnabled": false,
120
+ "allEventsMax": 1000,
121
+ "allEventsSaveOnDisk": false,
122
+ "eventsPath": "calendar/",
123
+ "cfgEventsEnabled": true,
124
+ "cfgEventsMax": 1000,
125
+ "cfgEventsSaveOnDisk": false
126
+ },
127
+ "instanceObjects": [
128
+ {
129
+ "_id": "info",
130
+ "type": "channel",
131
+ "common": {
132
+ "name": "Information"
133
+ },
134
+ "native": {}
135
+ },
136
+ {
137
+ "_id": "info.lastConfiguredEvent",
138
+ "type": "state",
139
+ "common": {
140
+ "role": "state",
141
+ "name": "Last configured event",
142
+ "type": "json",
143
+ "read": true,
144
+ "write": false
145
+ },
146
+ "native": {}
147
+ },
148
+ {
149
+ "_id": "info.lastEvent",
150
+ "type": "state",
151
+ "common": {
152
+ "role": "state",
153
+ "name": "Any last event",
154
+ "type": "json",
155
+ "read": true,
156
+ "write": false
157
+ },
158
+ "native": {}
159
+ }
160
+ ],
161
+ "objects": [
162
+ {
163
+ "_id": "_design/schedule",
164
+ "language": "javascript",
165
+ "views": {
166
+ "schedule": {
167
+ "map": "function(doc) { if (doc.type === 'schedule') emit(doc.common.name, doc); }"
165
168
  }
166
- ]
169
+ }
170
+ }
171
+ ]
167
172
  }
package/main.js CHANGED
@@ -4,11 +4,11 @@
4
4
  'use strict';
5
5
 
6
6
  // you have to require the utils module and call adapter function
7
- const utils = require('@iobroker/adapter-core'); // Get common adapter utils
8
- const adapterName = require('./package.json').name.split('.').pop();
9
- const timeUtils = require('./admin/utils.js');
10
- const later = require('later');
11
- const SunCalc = require('./admin/suncalc.js');
7
+ const utils = require('@iobroker/adapter-core'); // Get common adapter utils
8
+ const adapterName = require('./package.json').name.split('.').pop();
9
+ const timeUtils = require('./admin/utils.js');
10
+ const later = require('later');
11
+ const SunCalc = require('./admin/suncalc.js');
12
12
  let adapter;
13
13
 
14
14
  let events;
@@ -327,19 +327,19 @@ function checkEvent(event) {
327
327
  function getRoomFunc(id) {
328
328
  let room = '';
329
329
  for (const r in rooms) {
330
- if (room.hasOwnProperty(r) && rooms[r].common.members.indexOf(id) !== -1) {
330
+ if (room.hasOwnProperty(r) && rooms[r].common.members.includes(id)) {
331
331
  room = rooms[r].common.name || r.substring('enum.rooms.'.length);
332
332
  break;
333
333
  }
334
334
  }
335
335
  let func = '';
336
336
  for (const f in funcs) {
337
- if (funcs[r].common.members.indexOf(id) !== -1) {
337
+ if (funcs[r].common.members.includes(id)) {
338
338
  func = funcs[r].common.name || r.substring('enum.functions.'.length);
339
339
  break;
340
340
  }
341
341
  }
342
- return {func: func, room: room};
342
+ return {func, room};
343
343
  }
344
344
 
345
345
  function readEnums(cb) {
@@ -394,7 +394,9 @@ function main() {
394
394
  events = {};
395
395
  if (!err && res) {
396
396
  for (let i = 0; i < res.rows.length; i++) {
397
- if (res.rows[i].id === 'schedules') continue;
397
+ if (res.rows[i].id === 'schedules') {
398
+ continue;
399
+ }
398
400
  events[res.rows[i].value._id] = checkEvent(res.rows[i].value);
399
401
  }
400
402
  }
@@ -406,7 +408,7 @@ function main() {
406
408
  }
407
409
 
408
410
  if (adapter.config.cfgEventsEnabled) {
409
- adapter.getObjectView('custom', 'state', {startkey: '', endkey: '\u9999'}, (err, res) => {
411
+ adapter.getObjectView('system', 'custom', {startkey: '', endkey: '\u9999'}, (err, res) => {
410
412
  let count = 0;
411
413
  if (!err && res) {
412
414
  for (let i = 0; i < res.rows.length; i++) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "iobroker.fullcalendar",
3
3
  "description": "This adapter allows planing with calendar.",
4
- "version": "1.1.0",
4
+ "version": "1.2.0",
5
5
  "author": {
6
6
  "name": "bluefox",
7
7
  "email": "dogafox@gmail.com"
@@ -25,19 +25,33 @@
25
25
  ],
26
26
  "dependencies": {
27
27
  "later": "^1.2.0",
28
- "@iobroker/adapter-core": "^1.0.3"
28
+ "@iobroker/adapter-core": "^2.5.1"
29
29
  },
30
30
  "devDependencies": {
31
+ "@alcalzone/release-script": "^3.4.1",
32
+ "@alcalzone/release-script-plugin-iobroker": "^3.4.1",
33
+ "@alcalzone/release-script-plugin-license": "^3.4.1",
31
34
  "gulp": "^4.0.2",
32
- "mocha": "^7.0.0",
33
- "chai": "^4.2.0"
35
+ "mocha": "^9.1.3",
36
+ "chai": "^4.3.4"
34
37
  },
35
38
  "bugs": {
36
39
  "url": "https://github.com/ioBroker/ioBroker.fullcalendar/issues"
37
40
  },
38
41
  "main": "main.js",
42
+ "files": [
43
+ "admin/",
44
+ "img/",
45
+ "io-package.json",
46
+ "LICENSE",
47
+ "main.js"
48
+ ],
39
49
  "scripts": {
40
- "test": "node node_modules/mocha/bin/mocha --exit"
50
+ "test": "node node_modules/mocha/bin/mocha --exit",
51
+ "release": "release-script",
52
+ "release-patch": "release-script patch --yes",
53
+ "release-minor": "release-script minor --yes",
54
+ "release-major": "release-script major --yes"
41
55
  },
42
56
  "license": "CC-BY-NC-4.0"
43
57
  }