ode-ngjs-front 1.3.5 → 1.4.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/dist/ode-ngjs-front.js +2 -2
- package/dist/ode-ngjs-front.js.map +1 -1
- package/dist/ts/modules/widgets.module.d.ts +2 -1
- package/dist/ts/modules/widgets.module.d.ts.map +1 -1
- package/dist/ts/services/theme-helper.service.d.ts.map +1 -1
- package/dist/ts/widgets/edumalin-widget/edumalin-widget.widget.d.ts +2 -0
- package/dist/ts/widgets/edumalin-widget/edumalin-widget.widget.d.ts.map +1 -0
- package/dist/version.txt +1 -1
- package/dist/widgets/edumalin-widget/edumalin-widget.widget.js +2 -0
- package/dist/widgets/edumalin-widget/edumalin-widget.widget.js.map +1 -0
- package/package.json +2 -2
|
@@ -14,7 +14,8 @@ export declare enum KnownWidget {
|
|
|
14
14
|
calendar = "calendar-widget",
|
|
15
15
|
universalis = "universalis-widget",
|
|
16
16
|
briefme = "briefme-widget",
|
|
17
|
-
lastInfos = "last-infos-widget"
|
|
17
|
+
lastInfos = "last-infos-widget",
|
|
18
|
+
edumalin = "edumalin-widget"
|
|
18
19
|
}
|
|
19
20
|
export declare type WidgetLoader = (widgetName: String) => Promise<void>;
|
|
20
21
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgets.module.d.ts","sourceRoot":"","sources":["../../../src/ts/modules/widgets.module.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAQ,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"widgets.module.d.ts","sourceRoot":"","sources":["../../../src/ts/modules/widgets.module.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAQ,OAAO,EAAE,MAAM,SAAS,CAAC;AAuCjD,oBAAY,WAAW;IACnB,SAAS,qBAA2B;IACpC,MAAM,kBAA2B;IACjC,MAAM,kBAA2B;IACjC,QAAQ,cAAqB;IAC7B,MAAM,kBAA2B;IACjC,KAAK,UAAoB;IACzB,QAAQ,oBAA2B;IACnC,GAAG,eAA2B;IAC9B,MAAM,YAAqB;IAC3B,YAAY,mBAAsB;IAClC,YAAY,wBAA2B;IACvC,QAAQ,oBAA2B;IACnC,WAAW,uBAA2B;IACtC,OAAO,mBAA2B;IAClC,SAAS,sBAA4B;IACrC,QAAQ,oBAA2B;CACtC;AACD,oBAAY,YAAY,GAAG,CAAC,UAAU,EAAC,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AA8U9D;;GAEG;AACH,wBAAgB,eAAe,IAAG,OAAO,CAExC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-helper.service.d.ts","sourceRoot":"","sources":["../../../src/ts/services/theme-helper.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAc,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD;;GAEG;AACH,qBAAa,kBAAkB;
|
|
1
|
+
{"version":3,"file":"theme-helper.service.d.ts","sourceRoot":"","sources":["../../../src/ts/services/theme-helper.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAc,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD;;GAEG;AACH,qBAAa,kBAAkB;IA0BvB,OAAO,CAAC,WAAW;IAzBvB,MAAM,CAAC,OAAO,WAAyB;IAEvC,OAAO,CAAC,YAAY,CAoBnB;gBAGW,WAAW,EAAC,eAAe;IAIvC,OAAO,KAAK,QAAQ,GAEnB;IAED,uCAAuC;IACvC,IAAI,GAAG,WAEN;IAED,8FAA8F;IACxF,qBAAqB,IAAG,OAAO,CAAC,MAAM,CAAC;IAW7C,4GAA4G;IACtG,oBAAoB,IAAG,OAAO,CAAC,MAAM,CAAC;IAM5C,SAAS,CAAE,GAAG,EAAC,MAAM,GAAG,MAAM;IAa9B;;;OAGG;IACH,mBAAmB,CAAE,QAAQ,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAM;IAYrD,4CAA4C;IAC5C,WAAW,CAAE,KAAK,EAAC,MAAM;IAWzB,iCAAiC;IAC3B,UAAU,CAAE,SAAS,EAAC,MAAM;IA8BlC,qEAAqE;IACrE,UAAU,IAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIlC,2FAA2F;IACrF,QAAQ,CAAE,KAAK,EAAC,UAAU;IAMhC;;OAEG;IACF,WAAW,CAAE,GAAG,EAAC,OAAO,GAAG,MAAM;IA2BlC,wCAAwC;IACxC,kBAAkB,CAAE,MAAM,EAAC,OAAO,GAAG,MAAM;CAG9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edumalin-widget.widget.d.ts","sourceRoot":"","sources":["../../../../src/ts/widgets/edumalin-widget/edumalin-widget.widget.ts"],"names":[],"mappings":"AAoNA,eAAO,MAAM,aAAa,4BAA4B,CAAC"}
|
package/dist/version.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
ode-ngjs-front
|
|
1
|
+
ode-ngjs-front 04/03/2024 11:01:27
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunkode_ngjs_front=self.webpackChunkode_ngjs_front||[]).push([[447],{1891:(t,e,i)=>{i.d(e,{Z:()=>n});const n=' <style>.widget-dashboard .dashboard-list .item:nth-child(2n){background:#fafafa}</style> <div class="widget-dashboard"> <div class="widget-header" style="border:0"> <div class="subtitle"> <a rel="noopener" ng-click="ctrl.onButtonClick(ctrl.generateLinkGar(), \'EDUMALIN_OPEN_GAR\')" style="display:flex"> <img src="/assets/widgets/edumalin-widget/edumalin.png" width="40" height="40" alt="edumalin"/> <span style="padding-left:20px"><i18n>edumalin.title</i18n></span> </a> </div> <div class="widget-options"> <div class="widget-handle" title="Déplacer le widget"> <i class="fas fa-grip-vertical" aria-hidden="true"></i> </div> </div> </div> <div class="widget-body" dnd-nodrag> <div ng-if="!ctrl.isDataLoaded" class="widget-empty-message"> <div class="row row-cols-1 align-items-center"> <div class="mb-3"> <div class="widget-empty-message" ng-if="ctrl.userEvents === undefined || ctrl.userEvents.length === 0"> <i18n>edumalin.empty</i18n> </div> </div> </div> </div> <ul class="dashboard-list" ng-if="ctrl.isDataLoaded"> <li class="item link-discret" ng-repeat="widget in ctrl.data" ng-click="ctrl.openLightBox(widget, $event)"> <a href="#" class="item-inner"> <div class="row"> <div class="col-3 mt-16"> <img ng-if="!ctrl.isURL(widget.picture)" src="/assets/widgets/edumalin-widget/edumalin.png" width="40" height="40" alt="edumalin" class="m-auto"/> <img ng-if="ctrl.isURL(widget.picture)" ng-src="{{ctrl.encodeUrlPicture(widget.picture)}}" width="60" height="60" alt="edumalin" class="m-auto"/> </div> <div class="col-9"> <div class="subtitle" translate content="[[widget.title]]"></div> <div class="subtext" translate ng-if="widget.description" content="[[widget.description.length>70 ? widget.description.slice(0, 70) + \' ...\' : widget.description]]"></div> <div class="info meta" ng-style="{\'color\': ctrl.displayIconColor(widget.type.name)}" ng-if="widget.type"> <i class="fas [[ctrl.displayIcon(widget.type.name)]]"></i> [[widget.type.name]] </div> </div> </div> </a> </li> </ul> </div> <ode-modal visible="ctrl.showLightbox" on-close="ctrl.showLightbox=false" size="lg" class="modal-widget"> <ode-modal-title> <h2 translate content="[[ctrl.currentWidget.title]]"></h2> </ode-modal-title> <ode-modal-body> <div class="container"> <div class="row"> <div class="col-md-4 col-sm-12"> <img ng-if="!ctrl.isURL(ctrl.currentWidget.picture)" src="/assets/widgets/edumalin-widget/edumalin.png" width="200" height="200" alt="edumalin" class="m-auto"/> <img ng-if="ctrl.isURL(ctrl.currentWidget.picture)" ng-src="{{ctrl.encodeUrlPicture(ctrl.currentWidget.picture)}}" width="200" height="200" alt="edumalin" class="m-auto"/> </div> <div class="col-md-8 col-sm-12"> <div class="label" translate content="[[ctrl.currentWidget.description]]"></div> <div class="mb-3 mt-12" ng-if="ctrl.isTypeRDV(ctrl.currentWidget.type.name)" ng-style="{\'color\': ctrl.displayIconColor(ctrl.currentWidget.type.name)}"> <a href="[[ctrl.currentWidget.googleMap]]" target="_blank" rel="noopener"> <div class="label"> <i class="fas [[ctrl.displayIcon(ctrl.currentWidget.type.name)]]"></i> <span translate content="[[ctrl.currentWidget.type.name]]"></span> </div> </a> </div> <div class="mb-3 mt-12" ng-if="!ctrl.isTypeRDV(ctrl.currentWidget.type.name)"> <div class="label"> <i class="fas [[ctrl.displayIcon(ctrl.currentWidget.type.name)]]" ng-style="{\'color\': ctrl.displayIconColor(ctrl.currentWidget.type.name)}"></i> <span translate content="[[ctrl.currentWidget.type.name]]" ng-style="{\'color\': ctrl.displayIconColor(ctrl.currentWidget.type.name)}"></span> <span ng-if="ctrl.isTypeWebinaire(ctrl.currentWidget.type.name)"> | <i18n>edumalin.webinaire.date</i18n>: [[ctrl.dateFormat(ctrl.currentWidget.dateTime)]] | <i18n>edumalin.webinaire.duration</i18n>: [[ctrl.currentWidget.duration]] min</span> </div> </div> </div> </div> <div> <div class="row"> <div class="col-md-5 col-sm-12"></div> <div class="col-md-3 col-sm-12 mb3"> <button type="button" class="btn btn-outline-primary form-control" ng-click="ctrl.onButtonClick(ctrl.generateLinkGar(), \'EDUMALIN_OPEN_GAR\')" translate content="edumalin.acceder"/> </div> <div class="col-md-4 col-sm-12"> <button ng-if="ctrl.currentWidget.buttonLink" type="button" class="btn btn-primary form-control" ng-click="ctrl.onButtonClick(ctrl.currentWidget.buttonLink, \'EDUMALIN_OPEN_LINK\')" translate> {{ctrl.currentWidget.buttonTitle}} </button> </div> </div> </div> </div> </ode-modal-body> </ode-modal> </div> '},3691:function(t,e,i){var n=this&&this.__awaiter||function(t,e,i,n){return new(i||(i=Promise))((function(r,a){function l(t){try{s(n.next(t))}catch(t){a(t)}}function c(t){try{s(n.throw(t))}catch(t){a(t)}}function s(t){var e;t.done?r(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(l,c)}s((n=n.apply(t,e||[])).next())}))},r=this&&this.__generator||function(t,e){var i,n,r,a,l={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(a){return function(c){return function(a){if(i)throw new TypeError("Generator is already executing.");for(;l;)try{if(i=1,n&&(r=2&a[0]?n.return:a[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,a[1])).done)return r;switch(n=0,r&&(a=[2&a[0],r.value]),a[0]){case 0:case 1:r=a;break;case 4:return l.label++,{value:a[1],done:!1};case 5:l.label++,n=a[1],a=[0];continue;case 7:a=l.ops.pop(),l.trys.pop();continue;default:if(!(r=l.trys,(r=r.length>0&&r[r.length-1])||6!==a[0]&&2!==a[0])){l=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]<r[3])){l.label=a[1];break}if(6===a[0]&&l.label<r[1]){l.label=r[1],r=a;break}if(r&&l.label<r[2]){l.label=r[2],l.ops.push(a);break}r[2]&&l.ops.pop(),l.trys.pop();continue}a=e.call(t,l)}catch(t){a=[6,t],n=0}finally{i=r=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}},a=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.odeModuleName=void 0;var l=a(i(4202)),c=i(9419),s=a(i(381)),o=function(){function t(){this.data={},this.error=null,this.showLightbox=!1,this.urlGar="https://idp-auth.gar.education.fr/domaineGar?idENT=ID_ENT&idEtab=ID_ETAB&idRessource=ark:/19496/UVdpWxn8N78r24"}return t.prototype.onButtonClick=function(t,e){e&&e.length>0&&this.trackEvent(e),window.open(t,"_blank")},Object.defineProperty(t.prototype,"isDataLoaded",{get:function(){return this.data.length>0},enumerable:!1,configurable:!0}),t.prototype.dateFormat=function(t){return s.default(t).format("L")},t.prototype.isTypeRDV=function(t){return"RDV"==t},t.prototype.isTypeWebinaire=function(t){return"Webinaire"==t},t.prototype.displayIcon=function(t){switch(t){case"RDV":return"fa-calendar-alt";case"Webinaire":return"fa-video";case"Annonce":return"fa-bullhorn";case"Actualité":return"fa-newspaper";case"Temoignage":return"fa-microphone-lines";case"Podcast":return"fa-headset";case"Replay":return"fa-rotate-left";case"Tutoriel":return"fa-wand-magic-sparkles";default:return"fa-info"}},t.prototype.displayIconColor=function(t){switch(t){case"RDV":return"#2a9cc8";case"Webinaire":return"#20c997";case"Annonce":return"#E13A3A";case"Actualité":return"#FF8D2E";case"Temoignage":return"#2029B6";case"Podcast":return"#823AA1";case"Replay":return"#46BFAF";case"Tutoriel":return"#ecbe30";default:return"#f59700"}},t.prototype.openLightBox=function(t,e){this.currentWidget=t,this.showLightbox=!0,e.currentTarget&&this.trackEvent("EDUMALIN_OPEN_MODAL")},t.prototype.isURL=function(t){return!!(t&&t.length>0&&(t.startsWith("http://")||t.startsWith("https://")))},t.prototype.generateLinkGar=function(){if(c.session().description&&c.session().description.schools&&c.session().description.schools.length>0){var t=c.session().description.schools[0],e=c.Base64.encode(null!=(null==t?void 0:t.UAI)?t.UAI:""),i=null!=t.exports?t.exports:[],n="";if(null!=i){for(var r=0;r<i.length;++r)if(i[r].startsWith("GAR-")){n=i[r].replace("GAR-","");break}""==n&&(n=i[0])}var a=c.Base64.encode(n);return this.urlGar.replace("ID_ETAB",e).replace("ID_ENT",a)}return"https://edumalin.fr/"},t.prototype.trackEvent=function(t){if(t&&t.length>0){var e={"event-type":t,modal:"Timeline"};c.http().post("/infra/event/web/store",e).catch((function(t){console.debug("[TrackingInternal] failed to trackEvent: ",t)}))}},t.prototype.encodeUrlPicture=function(t){return encodeURI(t)},t}(),d=function(){function t(){this.restrict="E",this.template=i(1891).Z,this.scope={},this.bindToController=!0,this.controller=[o],this.controllerAs="ctrl",this.require=["odeEdumalinWidget"]}return t.prototype.link=function(t,e,i,a){return n(this,void 0,void 0,(function(){var e;return r(this,(function(i){switch(i.label){case 0:return(e=a?a[0]:null)?[4,c.http().get("/appregistry/edumalin/widget").then((function(i){i.success?(e.data=i.data,t.$apply()):e.error=i.error}))]:[2];case 1:return i.sent(),[2]}}))}))},t}();c.notif().onLangReady().promise.then((function(t){c.conf().Platform.idiom.addKeys(i(7918))})),e.odeModuleName="odeEdumalinWidgetModule",l.default.module(e.odeModuleName,[]).directive("odeEdumalinWidget",(function(){return new d}))},7918:t=>{t.exports=JSON.parse('{"edumalin.title":"Édumalin","edumalin.acceder":"Accéder à Édumlain","edumalin.empty":"Aucun résultat","edumalin.webinaire.date":"Date","edumalin.webinaire.duration":"Duration"}')}}]);
|
|
2
|
+
//# sourceMappingURL=edumalin-widget.widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widgets/edumalin-widget/edumalin-widget.widget.js","mappings":"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","sources":["webpack://ode-ngjs-front/./src/ts/widgets/edumalin-widget/edumalin-widget.widget.html","webpack://ode-ngjs-front/./src/ts/widgets/edumalin-widget/edumalin-widget.widget.ts"],"sourcesContent":["// Module\nvar code = \" <style>.widget-dashboard .dashboard-list .item:nth-child(2n){background:#fafafa}</style> <div class=\\\"widget-dashboard\\\"> <div class=\\\"widget-header\\\" style=\\\"border:0\\\"> <div class=\\\"subtitle\\\"> <a rel=\\\"noopener\\\" ng-click=\\\"ctrl.onButtonClick(ctrl.generateLinkGar(), 'EDUMALIN_OPEN_GAR')\\\" style=\\\"display:flex\\\"> <img src=\\\"/assets/widgets/edumalin-widget/edumalin.png\\\" width=\\\"40\\\" height=\\\"40\\\" alt=\\\"edumalin\\\"/> <span style=\\\"padding-left:20px\\\"><i18n>edumalin.title</i18n></span> </a> </div> <div class=\\\"widget-options\\\"> <div class=\\\"widget-handle\\\" title=\\\"Déplacer le widget\\\"> <i class=\\\"fas fa-grip-vertical\\\" aria-hidden=\\\"true\\\"></i> </div> </div> </div> <div class=\\\"widget-body\\\" dnd-nodrag> <div ng-if=\\\"!ctrl.isDataLoaded\\\" class=\\\"widget-empty-message\\\"> <div class=\\\"row row-cols-1 align-items-center\\\"> <div class=\\\"mb-3\\\"> <div class=\\\"widget-empty-message\\\" ng-if=\\\"ctrl.userEvents === undefined || ctrl.userEvents.length === 0\\\"> <i18n>edumalin.empty</i18n> </div> </div> </div> </div> <ul class=\\\"dashboard-list\\\" ng-if=\\\"ctrl.isDataLoaded\\\"> <li class=\\\"item link-discret\\\" ng-repeat=\\\"widget in ctrl.data\\\" ng-click=\\\"ctrl.openLightBox(widget, $event)\\\"> <a href=\\\"#\\\" class=\\\"item-inner\\\"> <div class=\\\"row\\\"> <div class=\\\"col-3 mt-16\\\"> <img ng-if=\\\"!ctrl.isURL(widget.picture)\\\" src=\\\"/assets/widgets/edumalin-widget/edumalin.png\\\" width=\\\"40\\\" height=\\\"40\\\" alt=\\\"edumalin\\\" class=\\\"m-auto\\\"/> <img ng-if=\\\"ctrl.isURL(widget.picture)\\\" ng-src=\\\"{{ctrl.encodeUrlPicture(widget.picture)}}\\\" width=\\\"60\\\" height=\\\"60\\\" alt=\\\"edumalin\\\" class=\\\"m-auto\\\"/> </div> <div class=\\\"col-9\\\"> <div class=\\\"subtitle\\\" translate content=\\\"[[widget.title]]\\\"></div> <div class=\\\"subtext\\\" translate ng-if=\\\"widget.description\\\" content=\\\"[[widget.description.length>70 ? widget.description.slice(0, 70) + ' ...' : widget.description]]\\\"></div> <div class=\\\"info meta\\\" ng-style=\\\"{'color': ctrl.displayIconColor(widget.type.name)}\\\" ng-if=\\\"widget.type\\\"> <i class=\\\"fas [[ctrl.displayIcon(widget.type.name)]]\\\"></i> [[widget.type.name]] </div> </div> </div> </a> </li> </ul> </div> <ode-modal visible=\\\"ctrl.showLightbox\\\" on-close=\\\"ctrl.showLightbox=false\\\" size=\\\"lg\\\" class=\\\"modal-widget\\\"> <ode-modal-title> <h2 translate content=\\\"[[ctrl.currentWidget.title]]\\\"></h2> </ode-modal-title> <ode-modal-body> <div class=\\\"container\\\"> <div class=\\\"row\\\"> <div class=\\\"col-md-4 col-sm-12\\\"> <img ng-if=\\\"!ctrl.isURL(ctrl.currentWidget.picture)\\\" src=\\\"/assets/widgets/edumalin-widget/edumalin.png\\\" width=\\\"200\\\" height=\\\"200\\\" alt=\\\"edumalin\\\" class=\\\"m-auto\\\"/> <img ng-if=\\\"ctrl.isURL(ctrl.currentWidget.picture)\\\" ng-src=\\\"{{ctrl.encodeUrlPicture(ctrl.currentWidget.picture)}}\\\" width=\\\"200\\\" height=\\\"200\\\" alt=\\\"edumalin\\\" class=\\\"m-auto\\\"/> </div> <div class=\\\"col-md-8 col-sm-12\\\"> <div class=\\\"label\\\" translate content=\\\"[[ctrl.currentWidget.description]]\\\"></div> <div class=\\\"mb-3 mt-12\\\" ng-if=\\\"ctrl.isTypeRDV(ctrl.currentWidget.type.name)\\\" ng-style=\\\"{'color': ctrl.displayIconColor(ctrl.currentWidget.type.name)}\\\"> <a href=\\\"[[ctrl.currentWidget.googleMap]]\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\"> <div class=\\\"label\\\"> <i class=\\\"fas [[ctrl.displayIcon(ctrl.currentWidget.type.name)]]\\\"></i> <span translate content=\\\"[[ctrl.currentWidget.type.name]]\\\"></span> </div> </a> </div> <div class=\\\"mb-3 mt-12\\\" ng-if=\\\"!ctrl.isTypeRDV(ctrl.currentWidget.type.name)\\\"> <div class=\\\"label\\\"> <i class=\\\"fas [[ctrl.displayIcon(ctrl.currentWidget.type.name)]]\\\" ng-style=\\\"{'color': ctrl.displayIconColor(ctrl.currentWidget.type.name)}\\\"></i> <span translate content=\\\"[[ctrl.currentWidget.type.name]]\\\" ng-style=\\\"{'color': ctrl.displayIconColor(ctrl.currentWidget.type.name)}\\\"></span> <span ng-if=\\\"ctrl.isTypeWebinaire(ctrl.currentWidget.type.name)\\\"> | <i18n>edumalin.webinaire.date</i18n>: [[ctrl.dateFormat(ctrl.currentWidget.dateTime)]] | <i18n>edumalin.webinaire.duration</i18n>: [[ctrl.currentWidget.duration]] min</span> </div> </div> </div> </div> <div> <div class=\\\"row\\\"> <div class=\\\"col-md-5 col-sm-12\\\"></div> <div class=\\\"col-md-3 col-sm-12 mb3\\\"> <button type=\\\"button\\\" class=\\\"btn btn-outline-primary form-control\\\" ng-click=\\\"ctrl.onButtonClick(ctrl.generateLinkGar(), 'EDUMALIN_OPEN_GAR')\\\" translate content=\\\"edumalin.acceder\\\"/> </div> <div class=\\\"col-md-4 col-sm-12\\\"> <button ng-if=\\\"ctrl.currentWidget.buttonLink\\\" type=\\\"button\\\" class=\\\"btn btn-primary form-control\\\" ng-click=\\\"ctrl.onButtonClick(ctrl.currentWidget.buttonLink, 'EDUMALIN_OPEN_LINK')\\\" translate> {{ctrl.currentWidget.buttonTitle}} </button> </div> </div> </div> </div> </ode-modal-body> </ode-modal> </div> \";\n// Exports\nexport default code;","import angular, { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { conf, notif, http, session, Base64 } from \"../../utils\";\nimport moment from \"moment\";\n\nclass Controller implements IController {\n data: any = {};\n error: any = null;\n public currentWidget: any;\n public showLightbox = false;\n\n urlGar: string =\n \"https://idp-auth.gar.education.fr/domaineGar?idENT=ID_ENT&idEtab=ID_ETAB&idRessource=ark:/19496/UVdpWxn8N78r24\";\n\n onButtonClick(link: string, eventType: String) {\n // Track this event.\n if (eventType && eventType.length > 0) {\n this.trackEvent(eventType);\n }\n\n window.open(link, \"_blank\");\n }\n\n protected get isDataLoaded() {\n return this.data.length > 0;\n }\n\n dateFormat(dateTime: any) {\n let date = moment(dateTime).format(\"L\");\n return date;\n }\n\n isTypeRDV(type: any) {\n return type == \"RDV\";\n }\n\n isTypeWebinaire(type: any) {\n return type == \"Webinaire\";\n }\n\n displayIcon(type: any) {\n switch (type) {\n case \"RDV\":\n return \"fa-calendar-alt\";\n case \"Webinaire\":\n return \"fa-video\";\n case \"Annonce\":\n return \"fa-bullhorn\";\n case \"Actualité\":\n return \"fa-newspaper\";\n case \"Temoignage\":\n return \"fa-microphone-lines\";\n case \"Podcast\":\n return \"fa-headset\";\n case \"Replay\":\n return \"fa-rotate-left\";\n case \"Tutoriel\":\n return \"fa-wand-magic-sparkles\";\n default:\n return \"fa-info\";\n }\n }\n\n displayIconColor(type: any) {\n switch (type) {\n case \"RDV\":\n return \"#2a9cc8\";\n case \"Webinaire\":\n return \"#20c997\";\n case \"Annonce\":\n return \"#E13A3A\";\n case \"Actualité\":\n return \"#FF8D2E\";\n case \"Temoignage\":\n return \"#2029B6\";\n case \"Podcast\":\n return \"#823AA1\";\n case \"Replay\":\n return \"#46BFAF\";\n case \"Tutoriel\":\n return \"#ecbe30\";\n default:\n return \"#f59700\";\n }\n }\n\n openLightBox(contentType: any, e: Event) {\n this.currentWidget = contentType;\n this.showLightbox = true;\n\n // Track this event.\n if (e.currentTarget) {\n this.trackEvent(\"EDUMALIN_OPEN_MODAL\");\n }\n }\n\n isURL(str: String) {\n if (\n str &&\n str.length > 0 &&\n (str.startsWith(\"http://\") || str.startsWith(\"https://\"))\n ) {\n return true;\n }\n return false;\n }\n\n generateLinkGar() {\n if (\n session().description &&\n session().description.schools &&\n session().description.schools.length > 0\n ) {\n let school = session().description.schools[0];\n let UAIb64: string = Base64.encode(school?.UAI != null ? school.UAI : \"\");\n let exports: string[] = school.exports != null ? school.exports : [];\n let codeGar = \"\";\n if (exports != null) {\n for (let i = 0; i < exports.length; ++i)\n if (exports[i].startsWith(\"GAR-\")) {\n codeGar = exports[i].replace(\"GAR-\", \"\");\n break;\n }\n if (codeGar == \"\") codeGar = exports[0];\n }\n let codeGARb64 = Base64.encode(codeGar);\n\n return this.urlGar\n .replace(\"ID_ETAB\", UAIb64)\n .replace(\"ID_ENT\", codeGARb64);\n }\n\n return \"https://edumalin.fr/\";\n }\n\n // Give an opportunity to track some events from outside of this component.\n protected trackEvent(eventType: String) {\n // Track this event.\n if (eventType && eventType.length > 0) {\n const eventJson: any = {\n \"event-type\": eventType,\n modal: \"Timeline\",\n };\n\n http()\n .post(\"/infra/event/web/store\", eventJson)\n .catch((e) => {\n console.debug(\"[TrackingInternal] failed to trackEvent: \", e);\n });\n }\n }\n\n encodeUrlPicture(url: string) {\n return encodeURI(url);\n }\n}\n\n/* Directive */\nclass Directive\n implements IDirective<IScope, JQLite, IAttributes, IController[]>\n{\n restrict = \"E\";\n template = require(\"./edumalin-widget.widget.html\").default;\n scope = {};\n bindToController = true;\n controller = [Controller];\n controllerAs = \"ctrl\";\n require = [\"odeEdumalinWidget\"];\n\n async link(\n scope: IScope,\n elem: JQLite,\n attrs: IAttributes,\n controllers?: IController[]\n ) {\n const ctrl: Controller | null = controllers\n ? (controllers[0] as Controller)\n : null;\n if (!ctrl) {\n return;\n }\n\n await http()\n .get(\"/appregistry/edumalin/widget\")\n .then((response) => {\n if (response.success) {\n ctrl.data = response.data;\n scope.$apply();\n } else {\n ctrl.error = response.error;\n }\n });\n }\n}\n\n/** The edumalin widget. */\nfunction DirectiveFactory() {\n return new Directive();\n}\n\n// Preload translations\nnotif()\n .onLangReady()\n .promise.then((lang) => {\n switch (lang) {\n default:\n conf().Platform.idiom.addKeys(require(\"./i18n/fr.json\"));\n break;\n }\n });\n\n// THIS ANGULAR MODULE WILL BE DYNAMICALLY ADDED TO THE APPLICATION.\n// RESPECT THE NAMING CONVENTION BY EXPORTING THE MODULE NAME :\nexport const odeModuleName = \"odeEdumalinWidgetModule\";\nangular\n .module(odeModuleName, [])\n .directive(\"odeEdumalinWidget\", DirectiveFactory);\n"],"names":["data","error","showLightbox","urlGar","onButtonClick","link","eventType","length","this","trackEvent","window","open","dateFormat","dateTime","format","isTypeRDV","type","isTypeWebinaire","displayIcon","displayIconColor","openLightBox","contentType","e","currentWidget","currentTarget","isURL","str","startsWith","generateLinkGar","session","description","schools","school","UAIb64","Base64","encode","UAI","exports","codeGar","i","replace","codeGARb64","eventJson","modal","http","post","catch","console","debug","encodeUrlPicture","url","encodeURI","restrict","template","scope","bindToController","controller","Controller","controllerAs","require","elem","attrs","controllers","ctrl","get","then","response","success","$apply","notif","onLangReady","promise","lang","conf","Platform","idiom","addKeys","odeModuleName","module","directive","Directive"],"sourceRoot":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ode-ngjs-front",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "Open Digital Education Frontend Framework",
|
|
5
5
|
"main": "dist/ts/index.js",
|
|
6
6
|
"types": "dist/ts/index.d.ts",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"karma-chrome-launcher": "3.1.0",
|
|
52
52
|
"karma-jasmine": "4.0.1",
|
|
53
53
|
"moment-locales-webpack-plugin": "~1.2.0",
|
|
54
|
-
"ode-ts-client": "
|
|
54
|
+
"ode-ts-client": "1.2.1",
|
|
55
55
|
"terser-webpack-plugin": "5.1.4",
|
|
56
56
|
"ts-loader": "8.0.18",
|
|
57
57
|
"typescript": "4.2.2",
|