forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.js
More file actions
1 lines (1 loc) · 3.58 KB
/
Copy pathmain.js
File metadata and controls
1 lines (1 loc) · 3.58 KB
1
define(function(require,exports,module){if(!window.AppConfig||"dev"!==AppConfig.config.environment)return;const CommandManager=require("command/CommandManager"),Dialogs=require("widgets/Dialogs"),Strings=require("strings"),Mustache=require("thirdparty/mustache/mustache"),PhoenixBuilderClient=require("./phoenix-builder-client"),BuilderConnectTemplate=require("text!./builder-connect-dialog.html"),COMMAND_ID="debug.phoenixBuilderConnect",DEFAULT_WS_URL="ws://localhost:38571",LEVEL_COLORS={error:"background:#f44336;color:white;",warn:"background:#ff9800;color:white;",info:"background:#2196f3;color:white;",log:"background:#9e9e9e;color:white;"};function _escapeHtml(str){return str.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function _renderLogs($dialog){const boot=window._phoenixBuilder,logs=boot?boot.getLogBuffer():[],$container=$dialog.find(".builder-log-container");if($container.empty(),$dialog.find(".builder-log-count").text(logs.length+" entries"),0===logs.length)return void $container.html('<span style="opacity:0.5;">No logs captured yet.</span>');let html="";for(let i=0;i<logs.length;i++){const entry=logs[i],level=entry.level||"log",ts=entry.timestamp?entry.timestamp.replace("T"," ").replace("Z",""):"",badgeStyle=LEVEL_COLORS[level]||LEVEL_COLORS.log;html+='<div style="padding:2px 4px;border-bottom:1px solid rgba(128,128,128,0.15);"><span style="opacity:0.5;margin-right:6px;">'+_escapeHtml(ts)+'</span><span style="'+badgeStyle+'padding:1px 5px;border-radius:3px;font-size:11px;margin-right:6px;display:inline-block;min-width:36px;text-align:center;">'+level.toUpperCase()+"</span><span>"+_escapeHtml(entry.message)+"</span></div>"}$container.html(html),$container.scrollTop($container[0].scrollHeight)}function _handlePhoenixBuilderConnect(){let url=localStorage.getItem("phoenixBuilderWsUrl")||DEFAULT_WS_URL,enabled="true"===localStorage.getItem("phoenixBuilderEnabled");const templateVars={url:url,enabled:enabled,connected:PhoenixBuilderClient.isConnected(),instanceName:PhoenixBuilderClient.getInstanceName()},template=Mustache.render(BuilderConnectTemplate,templateVars);Dialogs.showModalDialogUsingTemplate(template).done(function(id){id===Dialogs.DIALOG_BTN_OK&&(localStorage.setItem("phoenixBuilderWsUrl",url),localStorage.setItem("phoenixBuilderEnabled",enabled?"true":"false"),enabled?PhoenixBuilderClient.connect(url):(PhoenixBuilderClient.disconnect(),localStorage.removeItem("logToConsole")))});const $dialog=$(".phoenix-builder-connect.instance");$dialog.find(".builder-url").on("input",function(){url=$(this).val()}),$dialog.find(".builder-enable").on("change",function(){enabled=$(this).is(":checked")}),$dialog.find(".builder-config-code").on("click",function(){Phoenix.app.copyToClipboard($(this).text());const $pre=$(this),$copied=$('<span style="position:absolute;right:8px;top:8px;padding:2px 8px;border-radius:3px;font-size:12px;background:var(--accent-color);color:white;pointer-events:none;">Copied!</span>');$pre.css("position","relative").append($copied),setTimeout(function(){$copied.remove()},1e3)}),$dialog.find('.nav-tabs a[data-toggle="tab"]').on("click",function(e){e.preventDefault();const $this=$(this),target=$this.attr("href");$dialog.find(".nav-tabs li").removeClass("active"),$this.parent().addClass("active"),$dialog.find(".tab-pane").removeClass("active"),$dialog.find(target).addClass("active"),"#builder-logs"===target&&_renderLogs($dialog)}),$dialog.find(".builder-log-refresh").on("click",function(){_renderLogs($dialog)})}CommandManager.register(Strings.CMD_PHOENIX_BUILDER_CONNECT,COMMAND_ID,_handlePhoenixBuilderConnect,{supportsDesignMode:!0}),exports.COMMAND_ID=COMMAND_ID});