@nyaruka/temba-components 0.105.0 → 0.105.1
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/CHANGELOG.md +6 -0
- package/dist/temba-components.js +2 -2
- package/dist/temba-components.js.map +1 -1
- package/out-tsc/src/outboxmonitor/OutboxMonitor.js +1 -3
- package/out-tsc/src/outboxmonitor/OutboxMonitor.js.map +1 -1
- package/package.json +1 -1
- package/src/outboxmonitor/OutboxMonitor.ts +1 -4
|
@@ -51,7 +51,6 @@ export class OutboxMonitor extends ResizeElement {
|
|
|
51
51
|
this.firstFetch = new Date();
|
|
52
52
|
}
|
|
53
53
|
this.fetches++;
|
|
54
|
-
console.log(this.folders);
|
|
55
54
|
this.scheduleRefresh(Math.min(this.fetches * 5000, 60000));
|
|
56
55
|
const outbox = this.folders['outbox'];
|
|
57
56
|
this.backlogSize = outbox.current;
|
|
@@ -70,7 +69,6 @@ export class OutboxMonitor extends ResizeElement {
|
|
|
70
69
|
const sentInWindow = totalCompleted - startCount;
|
|
71
70
|
this.msgsPerSecond = sentInWindow / time;
|
|
72
71
|
const remaining = this.folders['outbox'].current;
|
|
73
|
-
console.log(remaining, this.msgsPerSecond);
|
|
74
72
|
const secondsRemaining = remaining / this.msgsPerSecond;
|
|
75
73
|
this.estimatedCompletionDate = new Date(new Date().getTime() + secondsRemaining * 1000);
|
|
76
74
|
}
|
|
@@ -99,7 +97,7 @@ export class OutboxMonitor extends ResizeElement {
|
|
|
99
97
|
or broadcasts. Your channels are currently sending at
|
|
100
98
|
${roundedRate.toLocaleString()}
|
|
101
99
|
message${roundedRate == 1 ? '' : 's'} per second. At that rate, your
|
|
102
|
-
outbox
|
|
100
|
+
outbox will clear
|
|
103
101
|
<temba-date
|
|
104
102
|
value="${this.estimatedCompletionDate.toISOString()}"
|
|
105
103
|
display="duration"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutboxMonitor.js","sourceRoot":"","sources":["../../../src/outboxmonitor/OutboxMonitor.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAoB,MAAM,KAAK,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,MAAM,OAAO,aAAc,SAAQ,aAAa;IAAhD;;QAEE,gBAAW,GAAG,CAAC,CAAC;QAGhB,aAAQ,GAAG,YAAY,CAAC;QAExB,YAAO,GAAyD,EAAE,CAAC;QASnE,YAAO,GAAG,CAAC,CAAC;QAGZ,kBAAa,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"OutboxMonitor.js","sourceRoot":"","sources":["../../../src/outboxmonitor/OutboxMonitor.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAoB,MAAM,KAAK,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,MAAM,OAAO,aAAc,SAAQ,aAAa;IAAhD;;QAEE,gBAAW,GAAG,CAAC,CAAC;QAGhB,aAAQ,GAAG,YAAY,CAAC;QAExB,YAAO,GAAyD,EAAE,CAAC;QASnE,YAAO,GAAG,CAAC,CAAC;QAGZ,kBAAa,GAAG,CAAC,CAAC;IA0HpB,CAAC;IArHQ,MAAM,KAAK,MAAM;QACtB,OAAO,GAAG,CAAA;;;;;;;;;;;;;KAaT,CAAC;IACJ,CAAC;IAEO,YAAY;QAClB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACzC,KAAK;iBACF,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,CACrE;iBACA,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAChB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;wBACtB,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,OAAO,EAAE,IAAI,CAAC,KAAK;qBACpB,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;YAEL,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;YAC/B,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;YAEf,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAE3D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEtC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;YAClC,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,GACR,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;YAChE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEtC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACrD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAE7C,MAAM,YAAY,GAAG,cAAc,GAAG,UAAU,CAAC;YACjD,IAAI,CAAC,aAAa,GAAG,YAAY,GAAG,IAAI,CAAC;YAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;YACjD,MAAM,gBAAgB,GAAG,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;YAExD,IAAI,CAAC,uBAAuB,GAAG,IAAI,IAAI,CACrC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,gBAAgB,GAAG,IAAI,CAC/C,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,IAAY;QAClC,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAES,YAAY,CACpB,OAA0D;QAE1D,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACxC,CAAC;IAEM,MAAM;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC1E,OAAO,IAAI,CAAA;;;;;;cAMH,WAAW,CAAC,cAAc,EAAE;qBACrB,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;;;uBAGzB,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE;;;;;;aAMpD,CAAC;QACV,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AA3IC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDACX;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;+CACH;AAKxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDACV;AAGjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gDACX;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CACf;AAGZ;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oDACT;AAGlB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8DACG","sourcesContent":["import { css, html, PropertyValueMap } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { ResizeElement } from '../ResizeElement';\nimport { fetchResults } from '../utils';\n\nconst MIN_BACKLOG = 500000;\nexport class OutboxMonitor extends ResizeElement {\n @property({ type: Number })\n backlogSize = 0;\n\n @property({ type: String })\n endpoint = '/msg/menu/';\n\n folders: { [id: string]: { start: number; current: number } } = {};\n\n @property({ type: Object })\n firstFetch: Date;\n\n @property({ type: Object })\n lastFetch: Date;\n\n @property({ type: Number })\n fetches = 0;\n\n @property({ type: Number })\n msgsPerSecond = 0;\n\n @property({ type: Object })\n estimatedCompletionDate: Date;\n\n public static get styles() {\n return css`\n .monitor {\n margin: 1rem;\n margin-bottom: -0.5rem;\n }\n\n .header {\n font-weight: bold;\n }\n\n .estimate {\n font-size: 0.9em;\n }\n `;\n }\n\n private fetchFolders() {\n fetchResults(this.endpoint).then((items) => {\n items\n .filter(\n (item) =>\n item.id === 'outbox' || item.id === 'sent' || item.id === 'failed'\n )\n .forEach((item) => {\n if (this.folders[item.id]) {\n this.folders[item.id].current = item.count;\n } else {\n this.folders[item.id] = {\n start: item.count,\n current: item.count\n };\n }\n });\n\n if (this.firstFetch) {\n this.lastFetch = new Date();\n } else {\n this.firstFetch = new Date();\n }\n this.fetches++;\n\n this.scheduleRefresh(Math.min(this.fetches * 5000, 60000));\n\n const outbox = this.folders['outbox'];\n\n this.backlogSize = outbox.current;\n if (outbox.current > 1) {\n this.estimateCompletion();\n }\n });\n }\n\n private estimateCompletion() {\n if (this.lastFetch) {\n const time =\n (this.lastFetch.getTime() - this.firstFetch.getTime()) / 1000;\n const sent = this.folders['sent'];\n const failed = this.folders['failed'];\n\n const totalCompleted = sent.current + failed.current;\n const startCount = sent.start + failed.start;\n\n const sentInWindow = totalCompleted - startCount;\n this.msgsPerSecond = sentInWindow / time;\n\n const remaining = this.folders['outbox'].current;\n const secondsRemaining = remaining / this.msgsPerSecond;\n\n this.estimatedCompletionDate = new Date(\n new Date().getTime() + secondsRemaining * 1000\n );\n }\n }\n\n private scheduleRefresh(time: number) {\n setTimeout(() => {\n this.fetchFolders();\n }, time);\n }\n\n protected firstUpdated(\n changes: PropertyValueMap<any> | Map<PropertyKey, unknown>\n ): void {\n if (changes.has('endpoint') && this.endpoint) {\n this.fetchFolders();\n }\n }\n\n public hasBacklog() {\n return this.backlogSize > MIN_BACKLOG;\n }\n\n public render() {\n const roundedRate = Math.round(this.msgsPerSecond);\n if (this.hasBacklog() && this.estimatedCompletionDate && !this.isMobile()) {\n return html`<div class=\"monitor\">\n <temba-alert\n ><div class=\"header\">Outbox Notice</div>\n <div class=\"estimate\">\n If your outbox becomes too full, you won't be able to send new flows\n or broadcasts. Your channels are currently sending at\n ${roundedRate.toLocaleString()}\n message${roundedRate == 1 ? '' : 's'} per second. At that rate, your\n outbox will clear\n <temba-date\n value=\"${this.estimatedCompletionDate.toISOString()}\"\n display=\"duration\"\n ></temba-date\n >.\n </div></temba-alert\n >\n </div>`;\n } else {\n return null;\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -70,8 +70,6 @@ export class OutboxMonitor extends ResizeElement {
|
|
|
70
70
|
}
|
|
71
71
|
this.fetches++;
|
|
72
72
|
|
|
73
|
-
console.log(this.folders);
|
|
74
|
-
|
|
75
73
|
this.scheduleRefresh(Math.min(this.fetches * 5000, 60000));
|
|
76
74
|
|
|
77
75
|
const outbox = this.folders['outbox'];
|
|
@@ -97,7 +95,6 @@ export class OutboxMonitor extends ResizeElement {
|
|
|
97
95
|
this.msgsPerSecond = sentInWindow / time;
|
|
98
96
|
|
|
99
97
|
const remaining = this.folders['outbox'].current;
|
|
100
|
-
console.log(remaining, this.msgsPerSecond);
|
|
101
98
|
const secondsRemaining = remaining / this.msgsPerSecond;
|
|
102
99
|
|
|
103
100
|
this.estimatedCompletionDate = new Date(
|
|
@@ -135,7 +132,7 @@ export class OutboxMonitor extends ResizeElement {
|
|
|
135
132
|
or broadcasts. Your channels are currently sending at
|
|
136
133
|
${roundedRate.toLocaleString()}
|
|
137
134
|
message${roundedRate == 1 ? '' : 's'} per second. At that rate, your
|
|
138
|
-
outbox
|
|
135
|
+
outbox will clear
|
|
139
136
|
<temba-date
|
|
140
137
|
value="${this.estimatedCompletionDate.toISOString()}"
|
|
141
138
|
display="duration"
|