154 lines
6.8 KiB
JavaScript
154 lines
6.8 KiB
JavaScript
MixIO.log = console.log
|
||
stop_project = console.log('stop_project')
|
||
var lastPublishTime = [new Date(0), new Date(0), new Date(0), new Date(0), new Date(0), new Date(0), new Date(0), new Date(0), new Date(0), new Date(0), new Date(0), new Date(0), new Date(0), new Date(0), new Date(0), new Date(0), new Date(0), new Date(0), new Date(0), new Date(0)]
|
||
var minPublishInterval = 500
|
||
|
||
function isJSON(str) {
|
||
if (typeof str == 'string') {
|
||
try {
|
||
var obj = JSON.parse(str);
|
||
if (typeof obj == 'object' && obj) {
|
||
return true;
|
||
} else {
|
||
return false;
|
||
}
|
||
|
||
} catch (e) {
|
||
return false;
|
||
}
|
||
}
|
||
}
|
||
|
||
function publish(topic, message, omit) {
|
||
if (isRunning || omit) {
|
||
var newPublishTime = new Date()
|
||
if (newPublishTime - lastPublishTime[0] >= minPublishInterval) {
|
||
if (!isMixly)
|
||
client.publish(globalUserName + '/' + globalProjectName + '/' + topic, message)
|
||
else
|
||
client.publish('MixIO' + '/' + globalUserName.slice(1) + '/' + globalProjectName + '/' + topic, message)
|
||
lastPublishTime.shift()
|
||
lastPublishTime.push(new Date())
|
||
} else {
|
||
showtext(JSLang[lang].speedLimit)
|
||
MixIO.log(JSLang[lang].speedLimit)
|
||
}
|
||
}
|
||
}
|
||
isRunning = true;
|
||
isMixly = false;
|
||
$(function() {
|
||
init_layout();
|
||
get_width();
|
||
|
||
function view_project(resJSON, userName, projectPass, projectName, timeStamp) {
|
||
$("#prjName").html(projectName)
|
||
$("#shareMessage").html(userName + JSLang[lang].shareAt + timeStamp)
|
||
randomClientID = 'OBGuest_' + Math.random().toString(16).substr(2, 8)
|
||
globalUserName = userName
|
||
globalProjectName = projectName
|
||
client = mqtt.connect((location.protocol == 'https:' ? 'wss://' : 'ws://') + window.location.host + ":" + (location.protocol == 'https:' ? MIXIO_WSS_PORT : MIXIO_WS_PORT) + '/mqtt', {
|
||
'clientId': randomClientID,
|
||
'username': userName,
|
||
'password': projectPass
|
||
})
|
||
client.subscribe(userName + '/' + projectName + '/#')
|
||
var prev_layout = stringendecoder.decodeHtml(resJSON.layout_info)
|
||
var units_array = $(prev_layout)
|
||
for (var ct = 0; ct <= units_array.length - 1; ct = ct + 1) {
|
||
var un = $(units_array[ct])
|
||
var toolkits = {
|
||
'input_button': add_button,
|
||
'input_slider': add_slider,
|
||
'input_keyboard': add_keyboard,
|
||
'input_controller': add_controller,
|
||
'input_rgb': add_rgb,
|
||
'output_bulb': add_bulb,
|
||
'output_text': add_text,
|
||
'output_chart': add_chart,
|
||
'output_bar': add_bar,
|
||
'output_dashboard': add_dashboard,
|
||
'output_map': add_map,
|
||
'input_weather': add_weather,
|
||
'table': add_table,
|
||
'decorate_text': add_decorate_text,
|
||
'decorate_pic': add_decorate_pic,
|
||
'magic': add_magic,
|
||
'ble': add_ble,
|
||
'pixel': add_pixel,
|
||
'input_mic': add_mic,
|
||
'tinydb': add_tinydb,
|
||
'timer': add_timer,
|
||
'trigger': add_trigger,
|
||
'camera': add_camera,
|
||
'face': add_face,
|
||
'ocr': add_ocr,
|
||
'qr': add_qr
|
||
}
|
||
console.log(un.attr('user-type'))
|
||
toolkits[un.attr('user-type')](un.attr('user-title'), un.attr('user-topic'), un.attr('user-content'), un.attr('style'), un.attr('title_style'), true);
|
||
}
|
||
}
|
||
var modald = showmodaltext("<div style='text-align:center' class='nnt'><i class='fa fa-spin fa-cog' style='font-size:2rem;color:#4e73df'></i><p style='margin-top:6px;margin-bottom:0;color:#4e73df;font-size:1rem;font-weight:bold'>" + JSLang[lang].loading + "</p></div>")
|
||
if (getPar("sid")) {
|
||
$.get('fetchObserve', { 'sid': stringendecoder.encodeHtml(getPar("sid")) }, function(res) {
|
||
if (res != -1) {
|
||
view_project(JSON.parse(JSON.parse(res).projectLayout), JSON.parse(res).userName, JSON.parse(res).projectPass, JSON.parse(res).projectName, JSON.parse(res).timeStamp)
|
||
if (JSON.parse(res).logicStorage)
|
||
globalCode = MixIO.preCode + stringendecoder.decodeHtml(JSON.parse(JSON.parse(res).logicStorage).code)
|
||
else
|
||
globalCode = ''
|
||
$("#grid").removeClass("gridbg")
|
||
$("#grid").children(".item").addClass("itemrun")
|
||
$("#grid").children(".item").draggable({
|
||
disabled: true
|
||
})
|
||
$("#grid").children("[user-type='output_chart']").resizable({
|
||
disabled: true
|
||
})
|
||
$("#grid").children("[user-type='output_bar']").resizable({
|
||
disabled: true
|
||
})
|
||
$("#grid").children("[user-type='output_map']").resizable({
|
||
disabled: true
|
||
})
|
||
$("#grid").children("[user-type='table']").resizable({
|
||
disabled: true
|
||
})
|
||
$("#grid").children("[user-type='output_chart']").removeClass("moveDiv")
|
||
$("#grid").children("[user-type='output_bar']").removeClass("moveDiv")
|
||
$("#grid").children("[user-type='table']").removeClass("moveDiv")
|
||
$("#grid").children("[user-type='output_map']").removeClass("moveDiv")
|
||
var forceHide = setInterval(function() {
|
||
$(".facial").attr("hidden", "hidden")
|
||
$("#grid").children(".item").draggable({
|
||
disabled: true
|
||
})
|
||
// 设置jsgrid为不可编辑
|
||
$(".jsgrid").each(function() {
|
||
$(this).jsGrid("option", "editing", false);
|
||
$(this).jsGrid("option", "inserting", false);
|
||
$(this).jsGrid("option", "deleting", false);
|
||
$(this).find(".jsgrid-button").hide();
|
||
// 如果存在.jsgrid-button且已经隐藏,则取消forceHide事件
|
||
if ($(this).find(".jsgrid-button").is(":hidden")) {
|
||
clearInterval(forceHide);
|
||
}
|
||
})
|
||
}, 500)
|
||
|
||
modald.close()
|
||
try {
|
||
var logicFunction = Function(globalCode);
|
||
logicFunction()
|
||
} catch (e) {
|
||
showtext(JSLang[lang].logicError)
|
||
return false;
|
||
}
|
||
} else {
|
||
modald.close()
|
||
showmodaltext(JSLang[lang].invalidAUPrj)
|
||
}
|
||
})
|
||
}
|
||
}) |