Skip to content

Commit 1abc45b

Browse files
committed
MIDI関連のイベントのGETボタンを追加。プロファイル一覧画面に戻るボタンを追加。
1 parent 6eb4581 commit 1abc45b

5 files changed

Lines changed: 91 additions & 16 deletions

File tree

dConnectJavascriptApp/js/profile/midi.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ function showMidi(serviceId) {
99
initAll();
1010
setTitle('MIDI Profile');
1111

12+
let btnStr = getBackButton('Device Top', 'searchSystem', serviceId);
13+
reloadHeader(btnStr);
14+
reloadFooter(btnStr);
15+
1216
let str = '';
1317

1418
// MIDI デバイス情報

dConnectJavascriptApp/js/profile/soundController.js

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,26 @@ function showSoundController(serviceId) {
99
initAll();
1010
setTitle('SoundController Profile');
1111

12+
let btnStr = getBackButton('Device Top', 'searchSystem', serviceId);
13+
reloadHeader(btnStr);
14+
reloadFooter(btnStr);
15+
1216
let str = '';
1317
str += '<div>イベント登録状態: <span id="eventStatus"></span></div>';
14-
str += '<fieldset class="ui-grid-a">';
15-
str += '<div class="ui-block-a"><button id="btnRegisterOnNoteEvent">登録</button></div>';
16-
str += '<div class="ui-block-b"><button id="btnUnegisterOnNoteEvent">解除</button></div>';
18+
str += '<fieldset class="ui-grid-b">';
19+
str += '<div class="ui-block-a"><button id="btnGetOnNoteEvent">GET</button></div>';
20+
str += '<div class="ui-block-b"><button id="btnRegisterOnNoteEvent">登録</button></div>';
21+
str += '<div class="ui-block-c"><button id="btnUnegisterOnNoteEvent">解除</button></div>';
1722
str += '</fieldset>';
18-
str += '<div id="evaneLog"></div>';
23+
str += '<hr>';
24+
str += '<div>イベントログ:</div>';
25+
str += '<textarea id="evaneLog" data-autogrow="false" rows="10"></textarea>';
1926

2027
reloadContent(str);
2128

29+
$('#btnGetOnNoteEvent').on('click', function() {
30+
getOnNoteEvent(serviceId);
31+
});
2232
$('#btnRegisterOnNoteEvent').on('click', function() {
2333
registerOnNoteEvent(serviceId);
2434
});
@@ -33,6 +43,20 @@ function showOnNoteEventStatus(str) {
3343
$('#eventStatus').text(str);
3444
}
3545

46+
function getOnNoteEvent(serviceId) {
47+
sdk.get({
48+
profile: 'soundController',
49+
attribute: 'onNote',
50+
params: {
51+
serviceId
52+
}
53+
}).then(json => {
54+
showOnNoteMessage(json, 'GET');
55+
}).catch(e => {
56+
showError('GET /soundController/onNote', e.errorCode, e.errorMessage);
57+
});
58+
}
59+
3660
function registerOnNoteEvent(serviceId) {
3761
showOnNoteEventStatus('登録処理中...');
3862
sdk.addEventListener({
@@ -46,7 +70,7 @@ function registerOnNoteEvent(serviceId) {
4670
if (DEBUG) {
4771
console.log('Event: /soundController/onNote: ', json);
4872
}
49-
showOnNoteEvent(json);
73+
showOnNoteMessage(json, 'EVENT');
5074
}).then(json => {
5175
if (DEBUG) {
5276
console.log('Response: ', json);
@@ -58,11 +82,14 @@ function registerOnNoteEvent(serviceId) {
5882
});
5983
}
6084

61-
function showOnNoteEvent(json) {
85+
function showOnNoteMessage(json, type) {
6286
if (json) {
63-
let note = json.note;
6487
let channel = json.channel;
65-
$('#evaneLog').html(`音階=${note} チャンネル=${channel}`);
88+
let note = json.note;
89+
let state = json.state;
90+
91+
let log = $('#evaneLog').text();
92+
$('#evaneLog').text(`[${toLocaleDateTime(new Date())}][${type}] チャンネル=${channel} 音階=${note} 状態=${state}\n${log}`);
6693
}
6794
}
6895

dConnectJavascriptApp/js/profile/soundModule.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ function showSoundModule(serviceId) {
99
initAll();
1010
setTitle('SoundModule Profile');
1111

12+
let btnStr = getBackButton('Device Top', 'searchSystem', serviceId);
13+
reloadHeader(btnStr);
14+
reloadFooter(btnStr);
15+
1216
let str = '';
1317
str += '<table width="100%">';
1418
str += '<tbody>';

dConnectJavascriptApp/js/profile/volumeController.js

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,26 @@ function showVolumeController(serviceId) {
99
initAll();
1010
setTitle('VolumeController Profile');
1111

12+
let btnStr = getBackButton('Device Top', 'searchSystem', serviceId);
13+
reloadHeader(btnStr);
14+
reloadFooter(btnStr);
15+
1216
let str = '';
1317
str += '<div>イベント登録状態: <span id="eventStatus"></span></div>';
14-
str += '<fieldset class="ui-grid-a">';
15-
str += '<div class="ui-block-a"><button id="btnRegisterOnVolumeChangeEvent">登録</button></div>';
16-
str += '<div class="ui-block-b"><button id="btnUnegisterOnVolumeChangeEvent">解除</button></div>';
18+
str += '<fieldset class="ui-grid-b">';
19+
str += '<div class="ui-block-a"><button id="btnGetOnVolumeChangeEvent">GET</button></div>';
20+
str += '<div class="ui-block-b"><button id="btnRegisterOnVolumeChangeEvent">登録</button></div>';
21+
str += '<div class="ui-block-c"><button id="btnUnegisterOnVolumeChangeEvent">解除</button></div>';
1722
str += '</fieldset>';
18-
str += '<div id="evaneLog"></div>';
23+
str += '<hr>';
24+
str += '<div>イベントログ:</div>';
25+
str += '<textarea id="evaneLog" data-autogrow="false" rows="10"></textarea>';
1926

2027
reloadContent(str);
2128

29+
$('#btnGetOnVolumeChangeEvent').on('click', function() {
30+
getOnVolumeChangeEvent(serviceId);
31+
});
2232
$('#btnRegisterOnVolumeChangeEvent').on('click', function() {
2333
registerOnVolumeChangeEvent(serviceId);
2434
});
@@ -33,6 +43,20 @@ function showOnVolumeChangeEventStatus(str) {
3343
$('#eventStatus').text(str);
3444
}
3545

46+
function getOnVolumeChangeEvent(serviceId) {
47+
sdk.get({
48+
profile: 'volumeController',
49+
attribute: 'onVolumeChange',
50+
params: {
51+
serviceId
52+
}
53+
}).then(json => {
54+
showOnVolumeChangeMessage(json, 'GET');
55+
}).catch(e => {
56+
showError('GET /volumeController/onVolumeChange', e.errorCode, e.errorMessage);
57+
});
58+
}
59+
3660
function registerOnVolumeChangeEvent(serviceId) {
3761
showOnVolumeChangeEventStatus('登録処理中...');
3862
sdk.addEventListener({
@@ -46,7 +70,7 @@ function registerOnVolumeChangeEvent(serviceId) {
4670
if (DEBUG) {
4771
console.log('Event: /volumeController/onVolumeChange: ', json);
4872
}
49-
showOnVolumeChangeEvent(json);
73+
showOnVolumeChangeMessage(json, 'EVENT');
5074
}).then(json => {
5175
if (DEBUG) {
5276
console.log('Response: ', json);
@@ -58,11 +82,13 @@ function registerOnVolumeChangeEvent(serviceId) {
5882
});
5983
}
6084

61-
function showOnVolumeChangeEvent(json) {
85+
function showOnVolumeChangeMessage(json, type) {
6286
if (json) {
63-
let value = json.value;
6487
let channel = json.channel;
65-
$('#evaneLog').html(`ボリューム値=${value} チャンネル=${channel}`);
88+
let value = json.value;
89+
90+
let log = $('#evaneLog').text();
91+
$('#evaneLog').text(`[${toLocaleDateTime(new Date())}][${type}] チャンネル=${channel} ボリューム値=${value}\n${log}`);
6692
}
6793
}
6894

dConnectJavascriptApp/js/sdk/util.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,3 +244,17 @@ function showError(profileName, errorCode, errorMessage) {
244244
'\n errorCode:' + errorCode);
245245
}
246246
}
247+
248+
/**
249+
* 指定した Date オブジェクトの文字列表現を取得する.
250+
*
251+
* ミリ秒まで含めた、かつ、ロケールに合わせた日時の文字列を返す.
252+
*
253+
* @param {Object} date Date オブジェクト
254+
*/
255+
function toLocaleDateTime(date) {
256+
let dateStr = date.toLocaleDateString();
257+
let timeStr = date.toLocaleTimeString();
258+
let msStr = (date.getMilliseconds() / 1000).toFixed(3).slice(2, 5);
259+
return `${dateStr} ${timeStr}.${msStr}`;
260+
}

0 commit comments

Comments
 (0)