Je reviens sur mon sujet d’hier, @kiboost
En fait, c’est un peu des deux, selon mon interprétation.
Si je comprends bien, printEqLogic devient donc asynchrone.
jeedom/core/blob/c0c794673eb3831b3863f132055a31537b1d1ab8/core/js/plugin.template.js#L104
- },
- success: function(data) {
- document.getElementById('div_pageContainer').querySelectorAll('.eqLogicAttr').jeeValue('')
- if (isset(data) && isset(data.timeout) && data.timeout == 0) {
- data.timeout = ''
- }
- document.getElementById('div_mainContainer').setJeeValues(data, '.eqLogicAttr')
- if (!isset(data.category.opening)) try { document.querySelector('input[data-l2key="opening"]').checked = false } catch (e) { }
- if (typeof printEqLogic === 'function') {
- setTimeout(() => { printEqLogic(data) })
- }
- document.querySelectorAll('.cmd').remove()
- for (var i in data.cmd) {
- if (data.cmd[i].type == 'info') {
- data.cmd[i].state = String(data.cmd[i].state).replace(/<[^>]*>?/gm, '')
- data.cmd[i]['htmlstate'] = '<span class="cmdTableState"'
- data.cmd[i]['htmlstate'] += 'data-cmd_id="' + data.cmd[i].id+ '"'
- data.cmd[i]['htmlstate'] += 'title="{{Date de valeur}} : ' + data.cmd[i].valueDate + '<br/>{{Date de collecte}} : ' + data.cmd[i].collectDate
- if (data.cmd[i].state.length > 50) {
- data.cmd[i]['htmlstate'] += '<br/>' + data.cmd[i].state.replaceAll('"','"')
Donc, quand vient addCmdToTable, un peu après, les commandes sont chargées aux tabpanel précédemment ajoutés.
jeedom/core/blob/c0c794673eb3831b3863f132055a31537b1d1ab8/core/js/plugin.template.js#L123
- if (data.cmd[i].state.length > 50) {
- data.cmd[i]['htmlstate'] += '<br/>' + data.cmd[i].state.replaceAll('"','"')
- }
- data.cmd[i]['htmlstate'] += '" >'
- data.cmd[i]['htmlstate'] += data.cmd[i].state.substring(0, 50) + ' ' + data.cmd[i].unite
- data.cmd[i]['htmlstate'] += '<span>'
- } else {
- data.cmd[i]['htmlstate'] = '';
- }
- if (typeof addCmdToTable === 'function') {
- addCmdToTable(data.cmd[i])
- } else {
- jeeFrontEnd.pluginTemplate.addCmdToTableDefault(data.cmd[i])
- }
- jeedomUtils.initTooltips()
- }
- document.querySelectorAll('.cmdTableState').forEach(_cmdState => {
- jeedom.cmd.addUpdateFunction(_cmdState.getAttribute('data-cmd_id'), function(_options) {
- _options.display_value = String(_options.display_value).replace(/<[^>]*>?/gm, '')
- let cmd = document.querySelector('.cmdTableState[data-cmd_id="' + _options.cmd_id + '"]')
- if (cmd === null) {
Dans mon cas, j’ajoute des tabpanel dynamiquement en fonction d’une ‹ type › contenu dans la configuration de l’équipement, et par la suite les commandes associées à ce ‹ type › au bon tabpanel. (ex: pour l’équipement four : cavité 0, cavité 1, cavité 2) => dans le but de trier les commandes fournies.
Les tabpanel n’ont donc pas/ou à peine le temps d’être complétés que addCmdToTable est déjà appelé et donc ne peut remplir les données des commandes.
Résultat : tous les tabpanel sont vides. Et j’ai une erreur JS lors de la fonction JS changeType (_cmd vide).
Y a-t-il une astuce, solution, meilleure manière de faire ?