/** * なでしこ3 追加プラグイン v1.0 2021/9/11 * v2.0 2024/8/27 v3.6に対応 * v3.0 2025/11/16 mjs形式に変更 * file : plugin_hyouji.mjs * サイト用に「表示」と定数を追加するだけ。 */ const PluginHyouji = { 'meta': { type: 'const', value: { pluginName: 'PluginHyouji', // プラグインの名前 description: '表示関連命令と定数の追加', pluginVersion: '3.0.0', // プラグインのバージョン nakoRuntime: ['wnako'], // 対象ランタイム nakoVersion: '3.7.0' // 最小要求なでしこバージョン } }, '表示': { type: 'func', josi: [['の', 'と', 'を'], ['で']], isVariableJosi: true, return_none: true, fn: function (text, ...pID) { const sys = pID.pop(); let color = ''; if( pID.length > 0 ) { // 色を指定する場合 2021/9/11追加 color = pID[0]; } else { color = ''; } const parent = sys.__getSysVar('DOM親要素'); var te = document.createElement('span'); te.innerHTML = text + '
'; te.style.color = color; parent.appendChild(te); } }, '無効化': { type: 'func', josi: ['を'], pure: true, fn: function (dom, s, v, sys) { if (typeof (dom) === 'string') { dom = document.querySelector(dom) } dom.disabled = true; }, return_none: true }, '有効化': { type: 'func', josi: ['を'], pure: true, fn: function (dom, s, v, sys) { if (typeof (dom) === 'string') { dom = document.querySelector(dom) } dom.disabled = false; }, return_none: true }, '表出力': { // @二次元配列をTABLEに変換して表示する。 (#id)へ(配列)を(太さ)で type: 'func', josi: [['を'],['で'],['へ', 'に']], isVariableJosi: true, pure: true, fn: function (a, ...pID) { const sys = pID.pop(); if (!(a instanceof Array)) { throw new Error('『表出力』には配列を指定する必要があります。') } // Elementの準備 const parent = sys.__getSysVar('DOM親要素'); var te = document.createElement('table'); let border = 0; let color = 'gray'; let el = null; // 可変長引数の処理 if( pID.length > 0 ) { // 線の太さを取得する pID[0] if( !isNaN(pID[0]) ) border = Number(pID[0]); // 要素を指定した場合は,表を差し替える pID[1] if( pID[1] ) { el = pID[1]; if (typeof el === 'string') { el = document.querySelector('#' + el) } if ( !el ) { throw new Error('指定したElementが存在しません。') } if ( el.nodeName !== 'TABLE' ) { throw new Error('『表出力』にはTABLEを指定する必要があります。') } } } // 行数取得 let rows = a.length; // 列数取得 let cols = 1 for (let i = 0; i < rows; i++) { if (a[i].length > cols) { cols = a[i].length } } // 表を生成 var data = []; for( i=0; i= a[i].length ) { cell.appendChild( document.createTextNode('') ); } else { cell.appendChild( document.createTextNode(a[i][j]) ); } cell.style.border = `${border}px solid ${color}`; } } // 表を出力 if( !el ) { te.id = 'nadesi-dom-' + sys.__getSysVar('DOM生成個数') parent.appendChild( te ); sys.setSysVar( 'DOM生成個数', sys.__getSysVar('DOM生成個数') + 1 ); } else { te.id = el.id; parent.replaceChild( te, el ); } return te.id; } }, '表セル': { // @表出力で生成したTABLEのセル(td)にDOMスタイル設定するときに使う関数 type: 'func', josi: ['の'], pure: true, fn: function (el, sys) { if (typeof el === 'string') { el = document.querySelector('#' + el) } if ( !el ) { throw new Error('指定したElementが存在しません。') } if( el.nodeName !== 'TABLE' ) { throw new Error('『表セル』にはTABLEを指定する必要があります。') } return `#${el.id} td`; } }, '引数確認': { type: 'func', josi: [['を'],['で'],['に']], isVariableJosi: true, pure: true, fn: function (a, ...pID) { const sys = pID.pop(); if( pID.length > 0 ) { console.log( `pID.length: ${pID.length}` ); for( let i = 0; i < pID.length; i++ ) { console.log( `pID[${i}] = ${pID[i]} typeof: ${typeof(pID[i])}` ); } } } }, 'クジラ': { type: 'const', value: './img/kujira.png' }, 'ライオン': { type: 'const', value: './img/lion.gif' }, 'ペンギン': { type: 'const', value: './img/penguin.gif' }, '黒クジラ': { type: 'const', value: './img/kujira-bk.png' }, 'ピンポン': { type: 'const', value: './audio/se_maoudamashii_chime13.mp3' }, 'ブブー': { type: 'const', value: './audio/se_maoudamashii_onepoint32.mp3' }, '発車ベル': { type: 'const', value: './audio/se_maoudamashii_jingle03.mp3' }, 'ポコ': { type: 'const', value: './audio/poka.mp3' }, '効果音1' : { type: 'const', value: './audio/se_maoudamashii_system49.mp3' }, '効果音2' : { type: 'const', value: './audio/se_maoudamashii_system05.mp3' }, '効果音3' : { type: 'const', value: './audio/se_maoudamashii_system10.mp3' }, '効果音4' : { type: 'const', value: './audio/se_maoudamashii_system23.mp3' }, '効果音5' : { type: 'const', value: './audio/se_maoudamashii_system25.mp3' }, '効果音6' : { type: 'const', value: './audio/se_maoudamashii_system27.mp3' }, '効果音7' : { type: 'const', value: './audio/se_maoudamashii_system28.mp3' }, '効果音8' : { type: 'const', value: './audio/se_maoudamashii_system29.mp3' }, '効果音9' : { type: 'const', value: './audio/se_maoudamashii_system38.mp3' }, '効果音10': { type: 'const', value: './audio/se_maoudamashii_system39.mp3' }, '効果音11': { type: 'const', value: './audio/se_maoudamashii_system41.mp3' }, '効果音12': { type: 'const', value: './audio/se_maoudamashii_system43.mp3' }, '効果音13': { type: 'const', value: './audio/se_maoudamashii_system46.mp3' }, '効果音14': { type: 'const', value: './audio/se_maoudamashii_system47.mp3' }, '冷蔵庫閉1': { type: 'const', value: './img/refrigerator-close1.png' }, '冷蔵庫開1': { type: 'const', value: './img/refrigerator-open1.png' }, '冷蔵庫開2': { type: 'const', value: './img/refrigerator-open2.png' }, '車間1': { type: 'const', value: './img/distance-far.png' }, '車間2': { type: 'const', value: './img/distance-close.png' }, '車間3': { type: 'const', value: './img/distance-veryclose.png' }, '陽性者数API': { type: 'const', value: './api/get_pcr_positive_daily.php' }, 'NPWSサーバ': { type: 'const', value: 'wss://a0tklsq8jk.execute-api.ap-northeast-1.amazonaws.com/prod' }, // 2021.9.20追加 'チャットサーバ': { type: 'const', value: 'wss://a0tklsq8jk.execute-api.ap-northeast-1.amazonaws.com/prod' }, // 2021.9.20追加 '翻訳API': { type: 'const', value: 'https://3u3vc7vfz1.execute-api.ap-northeast-1.amazonaws.com/dev/translate' }, // 2021.9.26追加 '白箱': { type: 'const', value: './img/white.png' }, // 2024.9.6追加 // WS関連 'WS未接続': { // 2022.11.3 WS接続されていなければ「はい(1)」を,接続済なら「いいえ(0)」を返す。 2024.9.6修正 type: 'func', josi: [], pure: true, fn: function (sys) { const ws = sys.__getSysVar('WS:SOCKET'); if( !ws ) { // その他は,コネクションが綴じられている console.log( 'WS未接続: ' + 1); return 1; } else { if( ws.readyState == 1 ) { // 1:OPEN コネクションが開かれ、通信の準備ができている console.log( 'WS未接続: ' + 0); return 0; } else { return 1; } } } } } //プラグインの自動登録 if (typeof (navigator) === 'object') { navigator.nako3.addPluginObject('PluginHyouji', PluginHyouji) } else { module.exports = PluginHyouji }