bigbluebutton-html-plugin-sdk 0.0.52 → 0.0.54
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/README.md +37 -14
- package/dist/cjs/core/api/BbbPluginSdk.js +2 -0
- package/dist/cjs/core/api/BbbPluginSdk.js.map +1 -1
- package/dist/cjs/core/api/types.d.ts +8 -0
- package/dist/cjs/data-channel/hooks.js +6 -6
- package/dist/cjs/data-channel/hooks.js.map +1 -1
- package/dist/cjs/data-channel/types.d.ts +12 -13
- package/dist/cjs/extensible-areas/presentation-toolbar-item/component.d.ts +4 -1
- package/dist/cjs/extensible-areas/presentation-toolbar-item/component.js +3 -1
- package/dist/cjs/extensible-areas/presentation-toolbar-item/component.js.map +1 -1
- package/dist/cjs/extensible-areas/presentation-toolbar-item/types.d.ts +2 -0
- package/dist/cjs/learning-analytics-dashboard/enums.d.ts +3 -0
- package/dist/cjs/learning-analytics-dashboard/enums.js +8 -0
- package/dist/cjs/learning-analytics-dashboard/enums.js.map +1 -0
- package/dist/cjs/learning-analytics-dashboard/hooks.d.ts +2 -0
- package/dist/cjs/learning-analytics-dashboard/hooks.js +14 -0
- package/dist/cjs/learning-analytics-dashboard/hooks.js.map +1 -0
- package/dist/cjs/learning-analytics-dashboard/types.d.ts +10 -0
- package/dist/cjs/learning-analytics-dashboard/types.js +3 -0
- package/dist/cjs/learning-analytics-dashboard/types.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -138,7 +138,6 @@ export interface GraphqlResponseWrapper<TData> {
|
|
|
138
138
|
|
|
139
139
|
So we have the `data`, which is different for each hook, that's why it's a generic, the error, that will be set if, and only if, there is an error, otherwise it is undefined, and loading, which tells the developer if the query is still loading (being fetched) or not.
|
|
140
140
|
|
|
141
|
-
|
|
142
141
|
### Real time data exchange
|
|
143
142
|
|
|
144
143
|
- `useDataChannel` hook: this will allow you to exchange information (Send and receive) amongst different users through the same plugin;
|
|
@@ -149,14 +148,15 @@ So for this hook to read the data from the data channel, the developer will be a
|
|
|
149
148
|
- LATEST_ITEM: Fetches only the latest item pushed to the data-channel within a specific subchannel-name since the begining of the meeting;
|
|
150
149
|
- NEW_ITEMS: Fetches the new items pushed to the data-channel within a specific subchannel-name since the moment that the `useDataChannel` hook has been called (It will not see entries sent previous to that moment);
|
|
151
150
|
|
|
152
|
-
One can find examples of usage
|
|
151
|
+
An interesting thing about this hook is that it is generic, so, you can use a custom type, and this will be found not only in the consumer part of the data structure returned, but also in functions in which you need to specify an object to be persisted, meaning it will force the object to be of the type you mentioned previously (that is the case for `pushEntry` and `replaceEntry`). One can find examples of usage of this in the data-channel plugin sample or most of the official ones. The syntax is described below:
|
|
153
152
|
|
|
154
153
|
```typescript
|
|
155
|
-
const
|
|
156
|
-
response, // Data that will be returned
|
|
157
|
-
pushEntryFunction, // Function to push another item to the data-channel
|
|
158
|
-
deleteEntryFunction, // Function to delete specific item or wipe all
|
|
159
|
-
|
|
154
|
+
const {
|
|
155
|
+
data: response, // Data that will be returned
|
|
156
|
+
pushEntry: pushEntryFunction, // Function to push another item to the data-channel
|
|
157
|
+
deleteEntry: deleteEntryFunction, // Function to delete specific item or wipe all
|
|
158
|
+
replaceEntry: replaceEntryFunction, // Function replace a specifi item
|
|
159
|
+
} = useDataChannel<CustomType>(
|
|
160
160
|
channelName, // Defined according to what is on settings.yml from bbb-htlm5
|
|
161
161
|
DataChannelTypes.All_ITEMS, // | LATEST_ITEM | NEW_ITEMS -> ALL_ITEMS is default
|
|
162
162
|
subChannelName = 'default', // If no subchannelName is specified, it will be 'default'
|
|
@@ -167,7 +167,7 @@ Wiping all data off will delete every item from the specific data-channel within
|
|
|
167
167
|
|
|
168
168
|
The data-channel name must be written in the settings.yml.
|
|
169
169
|
|
|
170
|
-
All the permission for writing and deleting must be in the yaml too just like the example
|
|
170
|
+
All the permission for writing and deleting must be in the yaml too just like the example ahead:
|
|
171
171
|
|
|
172
172
|
```yaml
|
|
173
173
|
public:
|
|
@@ -176,10 +176,10 @@ public:
|
|
|
176
176
|
url: http://<your-hosted-plugin>/PluginName.js
|
|
177
177
|
dataChannels:
|
|
178
178
|
- name: channel-name
|
|
179
|
-
#
|
|
180
|
-
|
|
181
|
-
#
|
|
182
|
-
|
|
179
|
+
# pushPermission options: moderator, presenter, all
|
|
180
|
+
pushPermission: ['moderator','presenter']
|
|
181
|
+
# replaceOrDeletePermission options: moderator, presenter, creator, all
|
|
182
|
+
replaceOrdeletePermission:
|
|
183
183
|
- moderator
|
|
184
184
|
- sender
|
|
185
185
|
```
|
|
@@ -189,7 +189,9 @@ If no permission is mentioned in the yaml (writing or deleting), no one will be
|
|
|
189
189
|
The `pushEntryFunction` has a minor detail to pay attention to, it is possible to specify the users who you want to send the item to, if none is specified, all will receive the item, such as done ahead:
|
|
190
190
|
|
|
191
191
|
```typescript
|
|
192
|
-
pushEntryFunction(objectToBePushed: T,
|
|
192
|
+
pushEntryFunction(objectToBePushed: T, options: {
|
|
193
|
+
receivers?: ObjectTo[];
|
|
194
|
+
})
|
|
193
195
|
export interface ToUserId {
|
|
194
196
|
userId: string;
|
|
195
197
|
}
|
|
@@ -257,6 +259,27 @@ So the idea is that we have a `uiCommands` object and at a point, there will be
|
|
|
257
259
|
|
|
258
260
|
- `useChatMessageDomElements` hook: This hook will return the dom element of a chat message reactively, so one can modify whatever is inside, such as text, css, js, etc.;
|
|
259
261
|
|
|
262
|
+
### Learning Analytics Dashboard integration
|
|
263
|
+
|
|
264
|
+
- `sendGenericDataForLearningAnalyticsDashboard`: This function will send data for the bbb to render inside the plugin's table
|
|
265
|
+
|
|
266
|
+
The object structure of this function's argument must be:
|
|
267
|
+
|
|
268
|
+
```ts
|
|
269
|
+
interface GenericDataForLearningAnalyticsDashboard {
|
|
270
|
+
cardTitle: string; // Yet to be implemented (future updates)
|
|
271
|
+
columnTitle: string;
|
|
272
|
+
value: string;
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
So that the data will appear in the following form:
|
|
277
|
+
|
|
278
|
+
| User | Count | `<columnTitle>` |
|
|
279
|
+
| --- | :-- | --: |
|
|
280
|
+
| user-name | 1 | `<value>` |
|
|
281
|
+
|
|
282
|
+
|
|
260
283
|
|
|
261
284
|
### Frequently Asked Questions (FAQ)
|
|
262
285
|
|
|
@@ -313,7 +336,7 @@ Well there are several motives to why the sample is not working properly, so I w
|
|
|
313
336
|
|
|
314
337
|
- The config has not been set properly inside `bbb-html5.yml`, see [this section to configure your plugin](#running-the-plugin-from-source);
|
|
315
338
|
- The plugin is not even running in dev mode, it could be the port already in use, or typescript and/or javascript errors (Make sure to initialize the `pluginApi` as any of the samples inside a react function component);
|
|
316
|
-
- It could be an error with that sample indeed, or that feature the plugin uses broke (it is not usual, but can happen since BBB is constantly changing and enhancing its features with its wonderful community). If that happens, just open an issue in the [SDK
|
|
339
|
+
- It could be an error with that sample indeed, or that feature the plugin uses broke (it is not usual, but can happen since BBB is constantly changing and enhancing its features with its wonderful community). If that happens, just open an issue in the [SDK's github](https://github.com/bigbluebutton/bigbluebutton-html-plugin-sdk) detailing the error you are facing. And thank you in advance for reporting it back to us so we can improve each time.
|
|
317
340
|
|
|
318
341
|
**How to troubleshoot the plugins? See if it has loaded in the BBB, for instance.**
|
|
319
342
|
Well, each time a set of plugins are listed in the `bbb-html5.yml`, it will fire some logs based on the amount of plugins that it need to load inside the client. So open the console in the browser by pressing F12 key in your keyboard and search for the following log:
|
|
@@ -20,6 +20,7 @@ var hooks_9 = require("../../data-consumption/domain/user-voice/talking-indicato
|
|
|
20
20
|
var hooks_10 = require("../../ui-data-hooks/hooks");
|
|
21
21
|
var hooks_11 = require("../../data-consumption/domain/meeting/from-core/hooks");
|
|
22
22
|
var commands_2 = require("../../server-commands/commands");
|
|
23
|
+
var hooks_12 = require("../../learning-analytics-dashboard/hooks");
|
|
23
24
|
/**
|
|
24
25
|
* Class responsible for either initialize or get the PluginApi
|
|
25
26
|
*
|
|
@@ -65,6 +66,7 @@ var BbbPluginSdk = /** @class */ (function () {
|
|
|
65
66
|
return (0, hooks_1.useDataChannelGeneral)(channelName, subChannelName, pluginName, window.bbb_plugins[uuid], dataChannelType);
|
|
66
67
|
});
|
|
67
68
|
pluginApi.usePluginSettings = function () { return (0, settings_1.usePluginSettings)(pluginName); };
|
|
69
|
+
pluginApi.sendGenericDataForLearningAnalyticsDashboard = function (data) { return (0, hooks_12.sendGenericDataForLearningAnalyticsDashboard)(data, pluginName); };
|
|
68
70
|
}
|
|
69
71
|
else {
|
|
70
72
|
throw new Error('Plugin name not set');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BbbPluginSdk.js","sourceRoot":"","sources":["../../../../src/core/api/BbbPluginSdk.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,+BAAkC;AAOlC,kDAA4D;AAO5D,uDAAwD;AAQxD,kDAAiE;AACjE,gGAEgF;AAChF,wFAEwE;AACxE,oFAA+F;AAC/F,gFAAwF;AACxF,oFAA+F;AAC/F,4DAAoE;AACpE,uDAA0D;AAC1D,mEAA2E;AAE3E,uFAAsG;AACtG,2EAA8F;AAE9F,0FAAuG;AACvG,oDAAsD;AAEtD,gFAAmF;AACnF,2DAAgE;
|
|
1
|
+
{"version":3,"file":"BbbPluginSdk.js","sourceRoot":"","sources":["../../../../src/core/api/BbbPluginSdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,7 @@ import { GenericContentInterface } from '../../extensible-areas/generic-content-
|
|
|
27
27
|
import { UseUiDataFunction } from '../../ui-data-hooks/types';
|
|
28
28
|
import { UseMeetingFunction } from '../../data-consumption/domain/meeting/from-core/types';
|
|
29
29
|
import { ServerCommands } from '../../server-commands/types';
|
|
30
|
+
import { SendGenericDataForLearningAnalyticsDashboard } from '../../learning-analytics-dashboard/types';
|
|
30
31
|
export type SetPresentationToolbarItems = (presentationToolbarItem: PresentationToolbarInterface[]) => string[];
|
|
31
32
|
export type SetUserListDropdownItems = (userListDropdownItem: UserListDropdownInterface[]) => string[];
|
|
32
33
|
export type SetActionButtonDropdownItems = (actionButtonDropdownInterface: ActionButtonDropdownInterface[]) => string[];
|
|
@@ -168,6 +169,13 @@ export interface PluginApi {
|
|
|
168
169
|
useChatMessageDomElements?: UseChatMessageDomElementsFunction;
|
|
169
170
|
getSessionToken?: GetSessionTokenFunction;
|
|
170
171
|
getJoinUrl?: GetJoinUrlFunction;
|
|
172
|
+
/**
|
|
173
|
+
* Send data to the Learning analytics dashboard
|
|
174
|
+
*
|
|
175
|
+
* @param data - object in which one can render in the learning analytics dashboard
|
|
176
|
+
*
|
|
177
|
+
*/
|
|
178
|
+
sendGenericDataForLearningAnalyticsDashboard?: SendGenericDataForLearningAnalyticsDashboard;
|
|
171
179
|
}
|
|
172
180
|
export interface PluginBrowserWindow extends Window {
|
|
173
181
|
bbb_plugins: {
|
|
@@ -51,11 +51,11 @@ exports.useDataChannelGeneral = (function (channelName, subChannelName, pluginNa
|
|
|
51
51
|
window.removeEventListener(channelIdentifier, handleDataChange);
|
|
52
52
|
};
|
|
53
53
|
}, []);
|
|
54
|
-
return
|
|
55
|
-
data,
|
|
56
|
-
pushEntryFunction,
|
|
57
|
-
deleteEntryFunction,
|
|
58
|
-
replaceEntryFunction,
|
|
59
|
-
|
|
54
|
+
return {
|
|
55
|
+
data: data,
|
|
56
|
+
pushEntry: pushEntryFunction,
|
|
57
|
+
deleteEntry: deleteEntryFunction,
|
|
58
|
+
replaceEntry: replaceEntryFunction,
|
|
59
|
+
};
|
|
60
60
|
});
|
|
61
61
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/data-channel/hooks.ts"],"names":[],"mappings":";;;AAAA,+BAA4C;AAa5C,qCAEsB;AAKtB,iCAA6D;AAC7D,iCAAqG;AAExF,QAAA,qBAAqB,GAAG,CAAC,UACpC,WAAmB,EAAE,cAAsB,EAC3C,UAAkB,EAAE,SAAoB,EACxC,eAAiC;IAE3B,IAAA,KAAkB,IAAA,gBAAQ,EAC9B,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,EAFM,IAAI,QAAA,EAAE,OAAO,QAEnB,CAAC;IACI,IAAA,KAA4C,IAAA,gBAAQ,GAAwB,EAA3E,iBAAiB,QAAA,EAAE,oBAAoB,QAAoC,CAAC;IAEnF,IAAM,mBAAmB,GAAwB,UAC/C,cAAgC,IAC7B,OAAA,IAAA,+BAAuB,EAAC,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,CAAC,EAAhF,CAAgF,CAAC;IAEtF,IAAM,oBAAoB,GAAyB,UACjD,OAAO,EACP,WAAW,IACR,OAAA,IAAA,gCAAwB,EAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,CAAC,EAAvF,CAAuF,CAAC;IAE7F,IAAM,iBAAiB,GAAG,IAAA,+BAAuB,EAAC,WAAW,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;IAE3F,IAAM,gBAAgB,GAAkB,CAAC,UACvC,WAAwF;QAExF,IAAM,WAAW,GAAG,WAAW,CAAC,MAE/B,CAAC;QACF,IAAM,aAAa,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,aAAqC,CAAC;QACzE,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,eAAe,MAAK,eAAe,EAAE;YACtD,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC3B;IACH,CAAC,CAAkB,CAAC;IAEpB,IAAM,qCAAqC,GAAkB,CAC3D;QACE,oBAAoB,CAAC,cAAM,OAAA,SAAS,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,EAApD,CAAoD,CAAC,CAAC;QACjF,MAAM,CAAC,mBAAmB,CACxB,UAAG,iBAAiB,wBAAqB,EACzC,qCAAqC,CACtC,CAAC;IACJ,CAAC,CAAkB,CAAC;IACtB,IAAA,iBAAS,EAAC;QACR,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QAC7D,MAAM,CAAC,gBAAgB,CACrB,UAAG,iBAAiB,wBAAqB,EACzC,qCAAqC,CACtC,CAAC;QAEF,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAyB,iBAAU,CAAC,UAAU,EAAE;YAClF,MAAM,EAAE;gBACN,IAAI,EAAE,wBAAgB,CAAC,oBAAoB;gBAC3C,aAAa,EAAE;oBACb,WAAW,aAAA;oBAAE,UAAU,YAAA;oBAAE,eAAe,iBAAA;oBAAE,cAAc,gBAAA;iBACzD;aACF;SACF,CAAC,CAAC,CAAC;QACJ,OAAO;YACL,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAA2B,iBAAU,CAAC,YAAY,EAAE;gBACtF,MAAM,EAAE;oBACN,IAAI,EAAE,wBAAgB,CAAC,oBAAoB;oBAC3C,aAAa,EAAE;wBACb,WAAW,aAAA;wBAAE,UAAU,YAAA;wBAAE,eAAe,iBAAA;wBAAE,cAAc,gBAAA;qBACzD;iBACF;aACF,CAAC,CAAC,CAAC;YACJ,MAAM,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QAClE,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO;QACL,IAAI;QACJ,iBAAiB;
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/data-channel/hooks.ts"],"names":[],"mappings":";;;AAAA,+BAA4C;AAa5C,qCAEsB;AAKtB,iCAA6D;AAC7D,iCAAqG;AAExF,QAAA,qBAAqB,GAAG,CAAC,UACpC,WAAmB,EAAE,cAAsB,EAC3C,UAAkB,EAAE,SAAoB,EACxC,eAAiC;IAE3B,IAAA,KAAkB,IAAA,gBAAQ,EAC9B,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,EAFM,IAAI,QAAA,EAAE,OAAO,QAEnB,CAAC;IACI,IAAA,KAA4C,IAAA,gBAAQ,GAAwB,EAA3E,iBAAiB,QAAA,EAAE,oBAAoB,QAAoC,CAAC;IAEnF,IAAM,mBAAmB,GAAwB,UAC/C,cAAgC,IAC7B,OAAA,IAAA,+BAAuB,EAAC,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,CAAC,EAAhF,CAAgF,CAAC;IAEtF,IAAM,oBAAoB,GAAyB,UACjD,OAAO,EACP,WAAW,IACR,OAAA,IAAA,gCAAwB,EAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,CAAC,EAAvF,CAAuF,CAAC;IAE7F,IAAM,iBAAiB,GAAG,IAAA,+BAAuB,EAAC,WAAW,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;IAE3F,IAAM,gBAAgB,GAAkB,CAAC,UACvC,WAAwF;QAExF,IAAM,WAAW,GAAG,WAAW,CAAC,MAE/B,CAAC;QACF,IAAM,aAAa,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,aAAqC,CAAC;QACzE,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,eAAe,MAAK,eAAe,EAAE;YACtD,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC3B;IACH,CAAC,CAAkB,CAAC;IAEpB,IAAM,qCAAqC,GAAkB,CAC3D;QACE,oBAAoB,CAAC,cAAM,OAAA,SAAS,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,EAApD,CAAoD,CAAC,CAAC;QACjF,MAAM,CAAC,mBAAmB,CACxB,UAAG,iBAAiB,wBAAqB,EACzC,qCAAqC,CACtC,CAAC;IACJ,CAAC,CAAkB,CAAC;IACtB,IAAA,iBAAS,EAAC;QACR,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QAC7D,MAAM,CAAC,gBAAgB,CACrB,UAAG,iBAAiB,wBAAqB,EACzC,qCAAqC,CACtC,CAAC;QAEF,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAyB,iBAAU,CAAC,UAAU,EAAE;YAClF,MAAM,EAAE;gBACN,IAAI,EAAE,wBAAgB,CAAC,oBAAoB;gBAC3C,aAAa,EAAE;oBACb,WAAW,aAAA;oBAAE,UAAU,YAAA;oBAAE,eAAe,iBAAA;oBAAE,cAAc,gBAAA;iBACzD;aACF;SACF,CAAC,CAAC,CAAC;QACJ,OAAO;YACL,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAA2B,iBAAU,CAAC,YAAY,EAAE;gBACtF,MAAM,EAAE;oBACN,IAAI,EAAE,wBAAgB,CAAC,oBAAoB;oBAC3C,aAAa,EAAE;wBACb,WAAW,aAAA;wBAAE,UAAU,YAAA;wBAAE,eAAe,iBAAA;wBAAE,cAAc,gBAAA;qBACzD;iBACF;aACF,CAAC,CAAC,CAAC;YACJ,MAAM,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QAClE,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO;QACL,IAAI,MAAA;QACJ,SAAS,EAAE,iBAAiB;QAC5B,WAAW,EAAE,mBAAmB;QAChC,YAAY,EAAE,oBAAoB;KACnC,CAAC;AACJ,CAAC,CAAiC,CAAC"}
|
|
@@ -21,7 +21,10 @@ export interface ToRole {
|
|
|
21
21
|
}
|
|
22
22
|
export type ObjectTo = ToUserId | ToRole;
|
|
23
23
|
export type ObjectToDelete = typeof RESET_DATA_CHANNEL | string;
|
|
24
|
-
export
|
|
24
|
+
export interface PushEntryFunctionOptionArgument {
|
|
25
|
+
receivers?: ObjectTo[];
|
|
26
|
+
}
|
|
27
|
+
export type PushEntryFunction<T = object> = (objectToBePushed: T, options?: PushEntryFunctionOptionArgument) => void;
|
|
25
28
|
export type DeleteEntryFunction = (objectToDelete: ObjectToDelete[]) => void;
|
|
26
29
|
export type ReplaceEntryFunction<T = object> = (entryId: string, payloadJson: T) => void;
|
|
27
30
|
export interface ReplaceEntryFunctionArguments<T> {
|
|
@@ -41,15 +44,11 @@ export interface DataChannelEntryResponseType<T> {
|
|
|
41
44
|
pluginName: string;
|
|
42
45
|
toRoles: string[];
|
|
43
46
|
}
|
|
44
|
-
export
|
|
45
|
-
GraphqlResponseWrapper<DataChannelEntryResponseType<T>[]
|
|
46
|
-
PushEntryFunction<T
|
|
47
|
-
DeleteEntryFunction
|
|
48
|
-
ReplaceEntryFunction<T
|
|
49
|
-
|
|
50
|
-
export type
|
|
51
|
-
|
|
52
|
-
PushEntryFunction<T>?,
|
|
53
|
-
DeleteEntryFunction?,
|
|
54
|
-
ReplaceEntryFunction<T>?
|
|
55
|
-
];
|
|
47
|
+
export interface UseDataChannelReturnType<T> {
|
|
48
|
+
data: GraphqlResponseWrapper<DataChannelEntryResponseType<T>[]>;
|
|
49
|
+
pushEntry: PushEntryFunction<T>;
|
|
50
|
+
deleteEntry: DeleteEntryFunction;
|
|
51
|
+
replaceEntry: ReplaceEntryFunction<T>;
|
|
52
|
+
}
|
|
53
|
+
export type UseDataChannelFunctionFromPluginApi = <T>(channelName: string, dataChannelType?: DataChannelTypes, subChannelName?: string) => UseDataChannelReturnType<T>;
|
|
54
|
+
export type UseDataChannelStaticFunction = <T>(channelName: string, subChannelName: string, pluginName: string, pluginApi: PluginApi, dataChannelType: DataChannelTypes) => UseDataChannelReturnType<T>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { PresentationToolbarItemType } from './enums';
|
|
2
3
|
import { PresentationToolbarInterface, PresentationToolbarButtonProps } from './types';
|
|
3
4
|
export declare class PresentationToolbarButton implements PresentationToolbarInterface {
|
|
@@ -5,6 +6,7 @@ export declare class PresentationToolbarButton implements PresentationToolbarInt
|
|
|
5
6
|
type: PresentationToolbarItemType;
|
|
6
7
|
label: string;
|
|
7
8
|
tooltip: string;
|
|
9
|
+
style: React.CSSProperties;
|
|
8
10
|
onClick: () => void;
|
|
9
11
|
/**
|
|
10
12
|
* Returns object to be used in the setter for presentation toolbar. In this case
|
|
@@ -13,10 +15,11 @@ export declare class PresentationToolbarButton implements PresentationToolbarInt
|
|
|
13
15
|
* @param label - label to be displayed in the button
|
|
14
16
|
* @param tooltip - tooltip to be displayed when hovering the button
|
|
15
17
|
* @param onClick - function to be called when clicking the button
|
|
18
|
+
* @param style - style of the button in the presentation toolbar
|
|
16
19
|
*
|
|
17
20
|
* @returns Object that will be interpreted by the core of Bigbluebutton (HTML5)
|
|
18
21
|
*/
|
|
19
|
-
constructor({ label, tooltip, onClick }: PresentationToolbarButtonProps);
|
|
22
|
+
constructor({ label, tooltip, onClick, style, }: PresentationToolbarButtonProps);
|
|
20
23
|
setItemId: (id: string) => void;
|
|
21
24
|
}
|
|
22
25
|
export declare class PresentationToolbarSpinner implements PresentationToolbarInterface {
|
|
@@ -11,11 +11,12 @@ var PresentationToolbarButton = /** @class */ (function () {
|
|
|
11
11
|
* @param label - label to be displayed in the button
|
|
12
12
|
* @param tooltip - tooltip to be displayed when hovering the button
|
|
13
13
|
* @param onClick - function to be called when clicking the button
|
|
14
|
+
* @param style - style of the button in the presentation toolbar
|
|
14
15
|
*
|
|
15
16
|
* @returns Object that will be interpreted by the core of Bigbluebutton (HTML5)
|
|
16
17
|
*/
|
|
17
18
|
function PresentationToolbarButton(_a) {
|
|
18
|
-
var _b = _a.label, label = _b === void 0 ? '' : _b, _c = _a.tooltip, tooltip = _c === void 0 ? '' : _c, _d = _a.onClick, onClick = _d === void 0 ? function () { } : _d;
|
|
19
|
+
var _b = _a.label, label = _b === void 0 ? '' : _b, _c = _a.tooltip, tooltip = _c === void 0 ? '' : _c, _d = _a.onClick, onClick = _d === void 0 ? function () { } : _d, _e = _a.style, style = _e === void 0 ? {} : _e;
|
|
19
20
|
var _this = this;
|
|
20
21
|
this.id = '';
|
|
21
22
|
this.setItemId = function (id) {
|
|
@@ -24,6 +25,7 @@ var PresentationToolbarButton = /** @class */ (function () {
|
|
|
24
25
|
this.label = label;
|
|
25
26
|
this.tooltip = tooltip;
|
|
26
27
|
this.onClick = onClick;
|
|
28
|
+
this.style = style;
|
|
27
29
|
this.type = enums_1.PresentationToolbarItemType.BUTTON;
|
|
28
30
|
}
|
|
29
31
|
return PresentationToolbarButton;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/extensible-areas/presentation-toolbar-item/component.ts"],"names":[],"mappings":";;;AAAA,iCAAsD;AAKtD,sCAAsC;AAEtC;
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/extensible-areas/presentation-toolbar-item/component.ts"],"names":[],"mappings":";;;AAAA,iCAAsD;AAKtD,sCAAsC;AAEtC;IAaE;;;;;;;;;;OAUG;IACH,mCAAY,EAEqB;YAD/B,aAAU,EAAV,KAAK,mBAAG,EAAE,KAAA,EAAE,eAAY,EAAZ,OAAO,mBAAG,EAAE,KAAA,EAAE,eAAkB,EAAlB,OAAO,mBAAG,cAAO,CAAC,KAAA,EAAE,aAAU,EAAV,KAAK,mBAAG,EAAE,KAAA;QAD1D,iBAQC;QA/BD,OAAE,GAAW,EAAE,CAAC;QAiChB,cAAS,GAAyB,UAAC,EAAU;YAC3C,KAAI,CAAC,EAAE,GAAG,oCAA6B,EAAE,CAAE,CAAC;QAC9C,CAAC,CAAC;QATA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,mCAA2B,CAAC,MAAM,CAAC;IACjD,CAAC;IAKH,gCAAC;AAAD,CAAC,AArCD,IAqCC;AArCY,8DAAyB;AAuCtC;IAKE;;;;;OAKG;IACH;QAAA,iBAEC;QAZD,OAAE,GAAW,EAAE,CAAC;QAchB,cAAS,GAAyB,UAAC,EAAU;YAC3C,KAAI,CAAC,EAAE,GAAG,oCAA6B,EAAE,CAAE,CAAC;QAC9C,CAAC,CAAC;QALA,IAAI,CAAC,IAAI,GAAG,mCAA2B,CAAC,OAAO,CAAC;IAClD,CAAC;IAKH,iCAAC;AAAD,CAAC,AAlBD,IAkBC;AAlBY,gEAA0B;AAoBvC;IAKE;;;;;OAKG;IACH;QAAA,iBAEC;QAZD,OAAE,GAAW,EAAE,CAAC;QAchB,cAAS,GAAyB,UAAC,EAAU;YAC3C,KAAI,CAAC,EAAE,GAAG,oCAA6B,EAAE,CAAE,CAAC;QAC9C,CAAC,CAAC;QALA,IAAI,CAAC,IAAI,GAAG,mCAA2B,CAAC,SAAS,CAAC;IACpD,CAAC;IAKH,mCAAC;AAAD,CAAC,AAlBD,IAkBC;AAlBY,oEAA4B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { PluginProvidedUiItemDescriptor } from '../base';
|
|
2
3
|
/**
|
|
3
4
|
* Interface for a generic item for presentation toolbar.
|
|
@@ -7,5 +8,6 @@ export interface PresentationToolbarInterface extends PluginProvidedUiItemDescri
|
|
|
7
8
|
export interface PresentationToolbarButtonProps {
|
|
8
9
|
label: string;
|
|
9
10
|
tooltip: string;
|
|
11
|
+
style: React.CSSProperties;
|
|
10
12
|
onClick: () => void;
|
|
11
13
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LearningAnalyticsDashboardEvents = void 0;
|
|
4
|
+
var LearningAnalyticsDashboardEvents;
|
|
5
|
+
(function (LearningAnalyticsDashboardEvents) {
|
|
6
|
+
LearningAnalyticsDashboardEvents["GENERIC_DATA_SENT"] = "GENERIC_DATA_FOR_LEARNING_ANALYTICS_DASHBOARD_SENT";
|
|
7
|
+
})(LearningAnalyticsDashboardEvents || (exports.LearningAnalyticsDashboardEvents = LearningAnalyticsDashboardEvents = {}));
|
|
8
|
+
//# sourceMappingURL=enums.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/learning-analytics-dashboard/enums.ts"],"names":[],"mappings":";;;AAAA,IAAY,gCAEX;AAFD,WAAY,gCAAgC;IAC1C,4GAAwE,CAAA;AAC1E,CAAC,EAFW,gCAAgC,gDAAhC,gCAAgC,QAE3C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sendGenericDataForLearningAnalyticsDashboard = void 0;
|
|
4
|
+
var enums_1 = require("./enums");
|
|
5
|
+
var sendGenericDataForLearningAnalyticsDashboard = function (data, pluginName) {
|
|
6
|
+
window.dispatchEvent(new CustomEvent(enums_1.LearningAnalyticsDashboardEvents.GENERIC_DATA_SENT, {
|
|
7
|
+
detail: {
|
|
8
|
+
pluginName: pluginName,
|
|
9
|
+
data: data,
|
|
10
|
+
},
|
|
11
|
+
}));
|
|
12
|
+
};
|
|
13
|
+
exports.sendGenericDataForLearningAnalyticsDashboard = sendGenericDataForLearningAnalyticsDashboard;
|
|
14
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/learning-analytics-dashboard/hooks.ts"],"names":[],"mappings":";;;AAIA,iCAA2D;AAEpD,IAAM,4CAA4C,GAAG,UAC1D,IAA8C,EAC9C,UAAkB;IAElB,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CACyB,wCAAgC,CAAC,iBAAiB,EAAE;QAC1F,MAAM,EAAE;YACN,UAAU,YAAA;YACV,IAAI,MAAA;SACL;KACF,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,4CAA4C,gDAavD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface GenericDataForLearningAnalyticsDashboard {
|
|
2
|
+
cardTitle: string;
|
|
3
|
+
columnTitle: string;
|
|
4
|
+
value: string;
|
|
5
|
+
}
|
|
6
|
+
export interface LearningAnalyticsDashboardEventDetails {
|
|
7
|
+
pluginName: string;
|
|
8
|
+
data: GenericDataForLearningAnalyticsDashboard;
|
|
9
|
+
}
|
|
10
|
+
export type SendGenericDataForLearningAnalyticsDashboard = (data: GenericDataForLearningAnalyticsDashboard) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/learning-analytics-dashboard/types.ts"],"names":[],"mappings":""}
|