mirror of
https://github.com/luc-github/ESP3D-WEBUI.git
synced 2025-10-31 11:56:46 -07:00
Revert "Merge pull request #193 from cotepat/surfacewiz"
This reverts commitd4fcb39d75, reversing changes made to29c1ebb967.
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,6 +1,3 @@
|
||||
node_modules
|
||||
dist
|
||||
src
|
||||
.DS_Store
|
||||
docs/.DS_Store
|
||||
www/.DS_Store
|
||||
|
||||
@@ -182,24 +182,20 @@ function process_files_Createdir(answer) {
|
||||
}
|
||||
|
||||
function files_create_dir(name) {
|
||||
files_create_dir(name, files_currentPath)
|
||||
}
|
||||
|
||||
function files_create_dir2(name, path) {
|
||||
if (direct_sd && !((target_firmware == "smoothieware") && files_currentPath.startsWith(secondary_sd))) {
|
||||
var cmdpath = path;
|
||||
if (target_firmware == "smoothieware") cmdpath = path.substring(primary_sd.length);
|
||||
var cmdpath = files_currentPath;
|
||||
if (target_firmware == "smoothieware") cmdpath = files_currentPath.substring(primary_sd.length);
|
||||
var url = "/upload?path=" + encodeURIComponent(cmdpath) + "&action=createdir&filename=" + encodeURIComponent(name);
|
||||
document.getElementById('files_nav_loader').style.display = "block";
|
||||
SendGetHttp(url, files_directSD_list_success, files_directSD_list_failed);
|
||||
} else {
|
||||
var command = "";
|
||||
if (target_firmware == "smoothieware") {
|
||||
command = "mkdir " + path + name;
|
||||
command = "mkdir " + files_currentPath + name;
|
||||
} else {
|
||||
command = "M32 " + path + name;
|
||||
command = "M32 " + files_currentPath + name;
|
||||
}
|
||||
SendPrinterCommand(command, true, files_process_and_update);
|
||||
SendPrinterCommand(command, true, files_proccess_and_update);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -238,11 +234,11 @@ function files_delete_file(index) {
|
||||
if ((current_source == tft_usb)|| (current_source == tft_sd))command +=current_source;
|
||||
command += files_currentPath + files_file_list[index].name;
|
||||
}
|
||||
SendPrinterCommand(command, true, files_process_and_update);
|
||||
SendPrinterCommand(command, true, files_proccess_and_update);
|
||||
}
|
||||
}
|
||||
|
||||
function files_process_and_update(answer) {
|
||||
function files_proccess_and_update(answer) {
|
||||
document.getElementById('files_navigation_buttons').style.display = "block";
|
||||
if (answer.startsWith("{") && answer.endsWith("}")) {
|
||||
try {
|
||||
@@ -811,28 +807,25 @@ function process_check_sd_presence(answer) {
|
||||
}
|
||||
|
||||
function files_start_upload() {
|
||||
var files = document.getElementById("files_input_file").files;
|
||||
files_start_upload(files, files_currentPath)
|
||||
}
|
||||
|
||||
function files_start_upload2(files, path) {
|
||||
if (http_communication_locked) {
|
||||
alertdlg(translate_text_item("Busy..."), translate_text_item("Communications are currently locked, please wait and retry."));
|
||||
console.log("communication locked");
|
||||
return;
|
||||
}
|
||||
var url = "/upload";
|
||||
if (direct_sd && (target_firmware == "smoothieware") && (path.startsWith(primary_sd))) {
|
||||
path = path.substring(primary_sd.length);
|
||||
var path = files_currentPath;
|
||||
if (direct_sd && (target_firmware == "smoothieware") && (files_currentPath.startsWith(primary_sd))) {
|
||||
path = files_currentPath.substring(primary_sd.length);
|
||||
}
|
||||
if (!direct_sd || (target_firmware == "smoothieware" && path.startsWith(secondary_sd))) {
|
||||
if (!direct_sd || (target_firmware == "smoothieware" && files_currentPath.startsWith(secondary_sd))) {
|
||||
url = "/upload_serial";
|
||||
if (target_firmware == "smoothieware") {
|
||||
if (path.startsWith(secondary_sd)) path = path.substring(secondary_sd.length);
|
||||
else path = path.substring(primary_sd.length);
|
||||
if (files_currentPath.startsWith(secondary_sd)) path = files_currentPath.substring(secondary_sd.length);
|
||||
else path = files_currentPath.substring(primary_sd.length);
|
||||
}
|
||||
}
|
||||
console.log("upload from " + path );
|
||||
//console.log("upload from " + path );
|
||||
var files = document.getElementById("files_input_file").files;
|
||||
|
||||
if (files.value == "" || typeof files[0].name === 'undefined') {
|
||||
console.log("nothing to upload");
|
||||
@@ -847,21 +840,22 @@ function files_start_upload2(files, path) {
|
||||
//append file size first to check updload is complete
|
||||
formData.append(arg, file.size);
|
||||
formData.append('myfile[]', file, path + file.name);
|
||||
console.log(path +file.name);
|
||||
//console.log( path +file.name);
|
||||
}
|
||||
files_error_status = "Upload " + file.name;
|
||||
document.getElementById('files_currentUpload_msg').innerHTML = file.name;
|
||||
document.getElementById('files_uploading_msg').style.display = "block";
|
||||
document.getElementById('files_navigation_buttons').style.display = "none";
|
||||
if (direct_sd && !(target_firmware == "smoothieware" && path.startsWith(secondary_sd))) {
|
||||
if (direct_sd && !(target_firmware == "smoothieware" && files_currentPath.startsWith(secondary_sd))) {
|
||||
SendFileHttp(url, formData, FilesUploadProgressDisplay, files_directSD_list_success, files_directSD_list_failed);
|
||||
//console.log("send file");
|
||||
} else {
|
||||
SendFileHttp(url, formData, FilesUploadProgressDisplay, files_process_and_update, files_serial_M20_list_failed);
|
||||
SendFileHttp(url, formData, FilesUploadProgressDisplay, files_proccess_and_update, files_serial_M20_list_failed);
|
||||
}
|
||||
document.getElementById("files_input_file").value = "";
|
||||
files_refreshFiles(path)
|
||||
}
|
||||
|
||||
|
||||
function FilesUploadProgressDisplay(oEvent) {
|
||||
if (oEvent.lengthComputable) {
|
||||
var percentComplete = (oEvent.loaded / oEvent.total) * 100;
|
||||
|
||||
122
www/js/grbl.js
122
www/js/grbl.js
@@ -1,6 +1,5 @@
|
||||
var interval_status = -1;
|
||||
var probe_progress_status = 0;
|
||||
var surface_progress_status = 0;
|
||||
var grbl_error_msg = "";
|
||||
var gotWCO = false;
|
||||
var WCOx = 0;
|
||||
@@ -125,24 +124,6 @@ function onprobetouchplatethicknessChange() {
|
||||
return true;
|
||||
}
|
||||
|
||||
function onsurfacewidthChange() {
|
||||
var travel = parseFloat(document.getElementById('surfacewidth').value);
|
||||
if (travel > 9999 || travel <= 0 || isNaN(travel) || (travel === null)) {
|
||||
alertdlg(translate_text_item("Out of range"), translate_text_item("Value of surface width must be between 1 mm and 9999 mm !"));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function onsurfacelengthChange() {
|
||||
var travel = parseFloat(document.getElementById('surfacelength').value);
|
||||
if (travel > 9999 || travel <= 0 || isNaN(travel) || (travel === null)) {
|
||||
alertdlg(translate_text_item("Out of range"), translate_text_item("Value of surface length must be between 1 mm and 9999 mm !"));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function on_autocheck_status(use_value) {
|
||||
if (probe_progress_status != 0) {
|
||||
document.getElementById('autocheck_status').checked = true;
|
||||
@@ -308,9 +289,6 @@ function process_grbl_status(response) {
|
||||
if (probe_progress_status != 0) {
|
||||
probe_failed_notification();
|
||||
}
|
||||
if (surface_progress_status != 0) {
|
||||
surface_failed_notification();
|
||||
}
|
||||
//grbl_error_msg = "";
|
||||
//check we are printing or not
|
||||
if (response.indexOf("|SD:") != -1) {
|
||||
@@ -325,10 +303,6 @@ function process_grbl_status(response) {
|
||||
document.getElementById('sd_reset_btn').style.display = "none";
|
||||
}
|
||||
if (tab2.toLowerCase().startsWith("idle")) {
|
||||
|
||||
if(surface_progress_status == 100) {
|
||||
finalize_surfacing();
|
||||
}
|
||||
grbl_error_msg = "";
|
||||
}
|
||||
document.getElementById('grbl_status_text').innerHTML = translate_text_item(grbl_error_msg);
|
||||
@@ -343,16 +317,6 @@ function finalize_probing() {
|
||||
document.getElementById("probingtext").style.display = "none";
|
||||
document.getElementById('sd_pause_btn').style.display = "none";
|
||||
document.getElementById('sd_resume_btn').style.display = "none";
|
||||
document.getElementById('sd_reset_btn').style.display = "none";
|
||||
}
|
||||
|
||||
function finalize_surfacing() {
|
||||
surface_progress_status = 0;
|
||||
grbl_error_msg = "";
|
||||
document.getElementById("surfacebtn").style.display = "table-row";
|
||||
document.getElementById("surfacingtext").style.display = "none";
|
||||
document.getElementById('sd_pause_btn').style.display = "none";
|
||||
document.getElementById('sd_resume_btn').style.display = "none";
|
||||
document.getElementById('sd_reset_btn').style.display = "none";
|
||||
}
|
||||
|
||||
@@ -370,9 +334,6 @@ function process_grbl_SD(response) {
|
||||
progress = progress.replace(">", "");
|
||||
}
|
||||
document.getElementById('grbl_SD_status').innerHTML = sdname + " <progress id='print_prg' value=" + progress + " max='100'></progress>" + progress + "%";
|
||||
if(progress == 100 & surface_progress_status != 0) {
|
||||
surface_progress_status = progress;
|
||||
}
|
||||
} else { //no SD printing
|
||||
//TODO
|
||||
document.getElementById('grbl_SD_status').innerHTML = "";
|
||||
@@ -414,7 +375,6 @@ function grbl_process_msg(response) {
|
||||
|
||||
function grbl_reset() {
|
||||
if (probe_progress_status != 0) probe_failed_notification();
|
||||
if (surface_progress_status != 0) surface_failed_notification();
|
||||
SendRealtimeCmd(String.fromCharCode(0x18));
|
||||
}
|
||||
|
||||
@@ -450,15 +410,8 @@ function probe_failed_notification() {
|
||||
beep(70, 261);
|
||||
}
|
||||
|
||||
function surface_failed_notification() {
|
||||
finalize_surfacing();
|
||||
alertdlg(translate_text_item("Error"), translate_text_item("Surfacing failed !"));
|
||||
beep(70, 261);
|
||||
}
|
||||
|
||||
function StartProbeProcess() {
|
||||
var cmd = "G38.2 G91 Z-";
|
||||
|
||||
if (!onprobemaxtravelChange() ||
|
||||
!onprobefeedrateChange() ||
|
||||
!onprobetouchplatethicknessChange()) {
|
||||
@@ -474,78 +427,3 @@ function StartProbeProcess() {
|
||||
grbl_error_msg = "";
|
||||
document.getElementById('grbl_status_text').innerHTML = grbl_error_msg;
|
||||
}
|
||||
|
||||
function StartSurfaceProcess() {
|
||||
var path = "/";
|
||||
var dirname = "SurfaceWizard";
|
||||
|
||||
var bitdiam = document.getElementById('surfacebitdiam').value;;
|
||||
var stepover = document.getElementById('surfacestepover').value;;
|
||||
var feedrate = document.getElementById('surfacefeedrate').value;;
|
||||
var surfacewidth = document.getElementById('surfacewidth').value;
|
||||
var surfacelength = document.getElementById('surfacelength').value;
|
||||
var Zdepth = document.getElementById('surfacezdepth').value;;
|
||||
var spindle = document.getElementById('surfacespindle').value;;
|
||||
|
||||
ncProg = CreateSurfaceProgram(bitdiam, stepover, feedrate, surfacewidth, surfacelength, Zdepth, spindle);
|
||||
|
||||
filename = "Surface" + "_X" + surfacewidth + "_Y" + surfacelength + "_Z-" + Zdepth + ".nc";
|
||||
|
||||
var blob = new Blob([ncProg], {type: "txt"});
|
||||
|
||||
files = [];
|
||||
files.push(new File([blob], filename));
|
||||
|
||||
files_start_upload2(files, "/" + dirname + "/")
|
||||
|
||||
surface_progress_status = 1;
|
||||
on_autocheck_status(true);
|
||||
files_print_filename(path + dirname + "/" + filename);
|
||||
document.getElementById("surfacebtn").style.display = "none";
|
||||
document.getElementById("surfacingtext").style.display = "table-row";
|
||||
//grbl_error_msg = "";
|
||||
//document.getElementById('grbl_status_text').innerHTML = grbl_error_msg;
|
||||
//finalize_surfacing()
|
||||
}
|
||||
|
||||
function CreateSurfaceProgram(bitdiam, stepover, feedrate, surfacewidth, surfacelength, Zdepth, spindle) {
|
||||
var crlf = "\n";
|
||||
|
||||
effectiveCuttingWidth = Math.round(1000 * (bitdiam * (1 - stepover/100))) / 1000;
|
||||
nPasses = Math.floor(surfacelength / effectiveCuttingWidth);
|
||||
lastPassWidth = surfacelength % effectiveCuttingWidth;
|
||||
|
||||
ncProg = "G21" + crlf; // Unit = mm
|
||||
ncProg += "G90" + crlf; // Absolute Positioning
|
||||
ncProg += "G53 G0 Z-5" + crlf; // Move spindle to safe height
|
||||
ncProg += "G54" + crlf; // Work Coordinates
|
||||
ncProg += "M3 S" + spindle + crlf; // Set spindle speed
|
||||
ncProg += "G4 P1.8" + crlf; // Spindle delay
|
||||
ncProg += "G1 F" + feedrate + crlf; // Set feedrate
|
||||
ncProg += "G0 X0 Y0" + crlf; // Move to XY origin at Z-safe height
|
||||
ncProg += "G1 Z-" + Zdepth + crlf; // Move to Z origin (while starting to cut)
|
||||
|
||||
var Xend = 0;
|
||||
for (var i = 0; i <= nPasses; i++) {
|
||||
Xend == 0 ? Xend = surfacewidth : Xend = 0; // alternate X (passes are in X direction)
|
||||
cmd = "G1 X" + Xend + " Y" + i * effectiveCuttingWidth + " Z-" + Zdepth;
|
||||
ncProg += cmd + crlf;
|
||||
if (i < nPasses) {
|
||||
cmd = "G1 Y" + (i+1) * effectiveCuttingWidth; // increment Y at each pass
|
||||
ncProg += cmd + crlf;
|
||||
}
|
||||
}
|
||||
|
||||
if(lastPassWidth > 0) {
|
||||
Xend == 0 ? Xend = surfacewidth : Xend = 0; // alternate X
|
||||
cmd = "G1 Y" + surfacelength;
|
||||
ncProg += cmd + crlf;
|
||||
cmd = "G1 X" + Xend + " Y" + surfacelength + " Z-" + Zdepth;
|
||||
ncProg += cmd + crlf;
|
||||
}
|
||||
|
||||
ncProg += "G53 G0 Z-5" + crlf; // Move spindle to safe height
|
||||
ncProg += "M5 S0" + crlf; // Spindle off
|
||||
|
||||
return ncProg;
|
||||
}
|
||||
|
||||
@@ -39,17 +39,9 @@ var defaultpreferenceslist = "[{\
|
||||
\"enable_autoscroll\":\"true\",\
|
||||
\"enable_verbose_mode\":\"true\",\
|
||||
\"enable_grbl_probe_panel\":\"false\",\
|
||||
\"enable_grbl_surface_panel\":\"false\",\
|
||||
\"probemaxtravel\":\"40\",\
|
||||
\"probefeedrate\":\"100\",\
|
||||
\"probetouchplatethickness\":\"0.5\",\
|
||||
\"surfacewidth\":\"100\",\
|
||||
\"surfacelength\":\"400\",\
|
||||
\"surfacezdepth\":\"0\",\
|
||||
\"surfacebitdiam\":\"12.7\",\
|
||||
\"surfacestepover\":\"40\",\
|
||||
\"surfacefeedrate\":\"1000\",\
|
||||
\"surfacespindle\":\"10000\"\
|
||||
\"probetouchplatethickness\":\"0.5\"\
|
||||
}]";
|
||||
var preferences_file_name = '/preferences.json';
|
||||
|
||||
@@ -92,17 +84,9 @@ function initpreferences() {
|
||||
\"enable_autoscroll\":\"true\",\
|
||||
\"enable_verbose_mode\":\"true\",\
|
||||
\"enable_grbl_probe_panel\":\"false\",\
|
||||
\"enable_grbl_surface_panel\":\"false\",\
|
||||
\"probemaxtravel\":\"40\",\
|
||||
\"probefeedrate\":\"100\",\
|
||||
\"probetouchplatethickness\":\"0.5\",\
|
||||
\"surfacewidth\":\"100\",\
|
||||
\"surfacelength\":\"400\",\
|
||||
\"surfacezdepth\":\"0\",\
|
||||
\"surfacebitdiam\":\"12.7\",\
|
||||
\"surfacestepover\":\"40\",\
|
||||
\"surfacefeedrate\":\"1000\",\
|
||||
\"surfacespindle\":\"10000\"\
|
||||
\"probetouchplatethickness\":\"0.5\"\
|
||||
}]";
|
||||
|
||||
document.getElementById('DHT_pref_panel').style.display = 'none';
|
||||
@@ -149,17 +133,9 @@ function initpreferences() {
|
||||
\"enable_autoscroll\":\"true\",\
|
||||
\"enable_verbose_mode\":\"true\",\
|
||||
\"enable_grbl_probe_panel\":\"false\",\
|
||||
\"enable_grbl_surface_panel\":\"false\",\
|
||||
\"probemaxtravel\":\"40\",\
|
||||
\"probefeedrate\":\"100\",\
|
||||
\"probetouchplatethickness\":\"0.5\",\
|
||||
\"surfacewidth\":\"100\",\
|
||||
\"surfacelength\":\"400\",\
|
||||
\"surfacezdepth\":\"0\",\
|
||||
\"surfacebitdiam\":\"12.7\",\
|
||||
\"surfacestepover\":\"40\",\
|
||||
\"surfacefeedrate\":\"1000\",\
|
||||
\"surfacespindle\":\"10000\"\
|
||||
\"probetouchplatethickness\":\"0.5\"\
|
||||
}]";
|
||||
|
||||
if (target_firmware == "marlin-embedded") document.getElementById('DHT_pref_panel').style.display = 'none';
|
||||
@@ -312,11 +288,6 @@ function applypreferenceslist() {
|
||||
document.getElementById("grblcontroltablink").click();
|
||||
document.getElementById('grblprobetablink').style.display = 'none';
|
||||
}
|
||||
if (preferenceslist[0].enable_grbl_surface_panel === 'true') {
|
||||
document.getElementById('grblsurfacetablink').style.display = 'block';
|
||||
} else {
|
||||
document.getElementById('grblsurfacetablink').style.display = 'none';
|
||||
}
|
||||
|
||||
if (preferenceslist[0].enable_DHT === 'true') {
|
||||
document.getElementById('DHT_humidity').style.display = 'block';
|
||||
@@ -509,13 +480,6 @@ function applypreferenceslist() {
|
||||
document.getElementById('probemaxtravel').value = parseFloat(preferenceslist[0].probemaxtravel);
|
||||
document.getElementById('probefeedrate').value = parseInt(preferenceslist[0].probefeedrate);
|
||||
document.getElementById('probetouchplatethickness').value = parseFloat(preferenceslist[0].probetouchplatethickness);
|
||||
document.getElementById('surfacewidth').value = parseFloat(preferenceslist[0].surfacewidth);
|
||||
document.getElementById('surfacelength').value = parseFloat(preferenceslist[0].surfacelength);
|
||||
document.getElementById('surfacezdepth').value = parseFloat(preferenceslist[0].surfacezdepth);
|
||||
document.getElementById('surfacestepover').value = parseInt(preferenceslist[0].surfacestepover);
|
||||
document.getElementById('surfacespindle').value = parseInt(preferenceslist[0].surfacespindle);
|
||||
document.getElementById('surfacefeedrate').value = parseInt(preferenceslist[0].surfacefeedrate);
|
||||
document.getElementById('surfacebitdiam').value = parseFloat(preferenceslist[0].surfacebitdiam);
|
||||
document.getElementById('tempInterval_check').value = parseInt(preferenceslist[0].interval_temperatures);
|
||||
document.getElementById('filament_length').value = parseInt(preferenceslist[0].e_distance);
|
||||
document.getElementById('extruder_velocity').value = parseInt(preferenceslist[0].e_feedrate);
|
||||
@@ -604,10 +568,6 @@ function build_dlg_preferences_list() {
|
||||
if (typeof(preferenceslist[0].enable_grbl_probe_panel) !== 'undefined') {
|
||||
document.getElementById('show_grbl_probe_tab').checked = (preferenceslist[0].enable_grbl_probe_panel === 'true');
|
||||
} else document.getElementById('show_grbl_probe_tab').checked = false;
|
||||
//grbl surface panel
|
||||
if (typeof(preferenceslist[0].enable_grbl_surface_panel) !== 'undefined') {
|
||||
document.getElementById('show_grbl_surface_tab').checked = (preferenceslist[0].enable_grbl_surface_panel === 'true');
|
||||
} else document.getElementById('show_grbl_surface_tab').checked = false;
|
||||
//control panel
|
||||
if (typeof(preferenceslist[0].enable_control_panel) !== 'undefined') {
|
||||
document.getElementById('show_control_panel').checked = (preferenceslist[0].enable_control_panel === 'true');
|
||||
@@ -688,46 +648,6 @@ function build_dlg_preferences_list() {
|
||||
if ((typeof(preferenceslist[0].probetouchplatethickness) !== 'undefined') && (preferenceslist[0].probetouchplatethickness.length != 0)) {
|
||||
document.getElementById('preferences_probetouchplatethickness').value = parseFloat(preferenceslist[0].probetouchplatethickness);
|
||||
} else document.getElementById('preferences_probetouchplatethickness').value = parseFloat(default_preferenceslist[0].probetouchplatethickness);
|
||||
//surfacewidth
|
||||
if ((typeof(preferenceslist[0].surfacewidth) !== 'undefined') && (preferenceslist[0].surfacewidth.length != 0)) {
|
||||
document.getElementById('preferences_surfacewidth').value = parseFloat(preferenceslist[0].surfacewidth);
|
||||
} else {
|
||||
document.getElementById('preferences_surfacewidth').value = parseFloat(default_preferenceslist[0].surfacewidth);
|
||||
}
|
||||
//surfacelength
|
||||
if ((typeof(preferenceslist[0].surfacelength) !== 'undefined') && (preferenceslist[0].surfacelength.length != 0)) {
|
||||
document.getElementById('preferences_surfacelength').value = parseFloat(preferenceslist[0].surfacelength);
|
||||
} else {
|
||||
document.getElementById('preferences_surfacelength').value = parseFloat(default_preferenceslist[0].surfacelength);
|
||||
}
|
||||
//surfacezdepth
|
||||
if ((typeof(preferenceslist[0].surfacezdepth) !== 'undefined') && (preferenceslist[0].surfacezdepth.length != 0)) {
|
||||
document.getElementById('preferences_surfacezdepth').value = parseFloat(preferenceslist[0].surfacezdepth);
|
||||
} else {
|
||||
document.getElementById('preferences_surfacezdepth').value = parseFloat(default_preferenceslist[0].surfacezdepth);
|
||||
}
|
||||
//surfacebitdiam
|
||||
if ((typeof(preferenceslist[0].surfacebitdiam) !== 'undefined') && (preferenceslist[0].surfacebitdiam.length != 0)) {
|
||||
document.getElementById('preferences_surfacebitdiam').value = parseFloat(preferenceslist[0].surfacebitdiam);
|
||||
} else document.getElementById('preferences_surfacebitdiam').value = parseFloat(default_preferenceslist[0].surfacebitdiam);
|
||||
//surfacespindle
|
||||
if ((typeof(preferenceslist[0].surfacespindle) !== 'undefined') && (preferenceslist[0].surfacespindle.length != 0)) {
|
||||
document.getElementById('preferences_surfacespindle').value = parseInt(preferenceslist[0].surfacespindle);
|
||||
} else {
|
||||
document.getElementById('preferences_surfacespindle').value = parseInt(default_preferenceslist[0].surfacespindle);
|
||||
}
|
||||
//surfacestepover
|
||||
if ((typeof(preferenceslist[0].surfacestepover) !== 'undefined') && (preferenceslist[0].surfacestepover.length != 0)) {
|
||||
document.getElementById('preferences_surfacestepover').value = parseInt(preferenceslist[0].surfacestepover);
|
||||
} else {
|
||||
document.getElementById('preferences_surfacestepover').value = parseInt(default_preferenceslist[0].surfacestepover);
|
||||
}
|
||||
//surfacefeedrate
|
||||
if ((typeof(preferenceslist[0].surfacefeedrate) !== 'undefined') && (preferenceslist[0].surfacefeedrate.length != 0)) {
|
||||
document.getElementById('preferences_surfacefeedrate').value = parseInt(preferenceslist[0].surfacefeedrate);
|
||||
} else {
|
||||
document.getElementById('preferences_surfacefeedrate').value = parseInt(default_preferenceslist[0].surfacefeedrate);
|
||||
}
|
||||
//interval temperatures
|
||||
if (typeof(preferenceslist[0].interval_temperatures) !== 'undefined') {
|
||||
document.getElementById('preferences_tempInterval_check').value = parseInt(preferenceslist[0].interval_temperatures);
|
||||
@@ -792,18 +712,10 @@ function closePreferencesDialog() {
|
||||
(typeof(preferenceslist[0].enable_control_panel) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].enable_grbl_panel) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].enable_grbl_probe_panel) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].enable_grbl_surface_panel) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].enable_temperatures_panel) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].probemaxtravel) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].probefeedrate) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].probetouchplatethickness) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].surfacewidth) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].surfacelength) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].surfacezdepth) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].surfacebitdiam) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].surfacespindle) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].surfacefeedrate) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].surfacestepover) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].enable_extruder_panel) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].enable_files_panel) === 'undefined') ||
|
||||
(typeof(preferenceslist[0].has_TFT_SD) === 'undefined') ||
|
||||
@@ -850,8 +762,6 @@ function closePreferencesDialog() {
|
||||
if (document.getElementById('show_grbl_panel').checked != (preferenceslist[0].enable_grbl_panel === 'true')) modified = true;
|
||||
//grbl probe panel
|
||||
if (document.getElementById('show_grbl_probe_tab').checked != (preferenceslist[0].enable_grbl_probe_panel === 'true')) modified = true;
|
||||
//grbl surface panel
|
||||
if (document.getElementById('show_grbl_surface_tab').checked != (preferenceslist[0].enable_grbl_surface_panel === 'true')) modified = true;
|
||||
//extruder panel
|
||||
if (document.getElementById('show_extruder_panel').checked != (preferenceslist[0].enable_extruder_panel === 'true')) modified = true;
|
||||
//files panel
|
||||
@@ -904,20 +814,6 @@ function closePreferencesDialog() {
|
||||
if (document.getElementById('preferences_probefeedrate').value != parseInt(preferenceslist[0].probefeedrate)) modified = true;
|
||||
//probetouchplatethickness
|
||||
if (document.getElementById('preferences_probetouchplatethickness').value != parseFloat(preferenceslist[0].probetouchplatethickness)) modified = true;
|
||||
//surfacewidth
|
||||
if (document.getElementById('preferences_surfacewidth').value != parseFloat(preferenceslist[0].surfacewidth)) modified = true;
|
||||
//surfacelength
|
||||
if (document.getElementById('preferences_surfacelength').value != parseFloat(preferenceslist[0].surfacelength)) modified = true;
|
||||
//surfacezdepth
|
||||
if (document.getElementById('preferences_surfacezdepth').value != parseFloat(preferenceslist[0].surfacezdepth)) modified = true;
|
||||
//surfacebitdiam
|
||||
if (document.getElementById('preferences_surfacebitdiam').value != parseFloat(preferenceslist[0].surfacebitdiam)) modified = true;
|
||||
//surfacespindle
|
||||
if (document.getElementById('preferences_surfacespindle').value != parseInt(preferenceslist[0].surfacespindle)) modified = true;
|
||||
//surfacefeedrate
|
||||
if (document.getElementById('preferences_surfacefeedrate').value != parseInt(preferenceslist[0].surfacefeedrate)) modified = true;
|
||||
//surfacestepover
|
||||
if (document.getElementById('preferences_surfacestepover').value != parseInt(preferenceslist[0].surfacestepover)) modified = true;
|
||||
}
|
||||
} else modified = true;
|
||||
if (language_save != language) modified = true;
|
||||
@@ -955,14 +851,7 @@ function SavePreferences(current_preferences) {
|
||||
!Checkvalues("preferences_filament_length") ||
|
||||
!Checkvalues("preferences_probemaxtravel") ||
|
||||
!Checkvalues("preferences_probefeedrate") ||
|
||||
!Checkvalues("preferences_probetouchplatethickness") ||
|
||||
!Checkvalues("preferences_surfacewidth") ||
|
||||
!Checkvalues("preferences_surfacelength") ||
|
||||
!Checkvalues("preferences_surfacebitdiam") ||
|
||||
!Checkvalues("preferences_surfacespindle") ||
|
||||
!Checkvalues("preferences_surfacefeedrate") ||
|
||||
!Checkvalues("preferences_surfacestepover") ||
|
||||
!Checkvalues("preferences_surfacezdepth")
|
||||
!Checkvalues("preferences_probetouchplatethickness")
|
||||
) return;
|
||||
if ((target_firmware != "grbl-embedded") || (grblaxis > 2)) {
|
||||
if(!Checkvalues("preferences_control_z_velocity")) return;
|
||||
@@ -989,7 +878,6 @@ function SavePreferences(current_preferences) {
|
||||
saveprefs += "\",\"enable_fan\":\"" + document.getElementById('enable_fan_controls').checked;
|
||||
saveprefs += "\",\"enable_control_panel\":\"" + document.getElementById('show_control_panel').checked;
|
||||
saveprefs += "\",\"enable_grbl_probe_panel\":\"" + document.getElementById('show_grbl_probe_tab').checked;
|
||||
saveprefs += "\",\"enable_grbl_surface_panel\":\"" + document.getElementById('show_grbl_surface_tab').checked;
|
||||
saveprefs += "\",\"enable_temperatures_panel\":\"" + document.getElementById('show_temperatures_panel').checked;
|
||||
saveprefs += "\",\"enable_extruder_panel\":\"" + document.getElementById('show_extruder_panel').checked;
|
||||
saveprefs += "\",\"enable_grbl_panel\":\"" + document.getElementById('show_grbl_panel').checked;
|
||||
@@ -999,13 +887,6 @@ function SavePreferences(current_preferences) {
|
||||
saveprefs += "\",\"probemaxtravel\":\"" + document.getElementById('preferences_probemaxtravel').value;
|
||||
saveprefs += "\",\"probefeedrate\":\"" + document.getElementById('preferences_probefeedrate').value;
|
||||
saveprefs += "\",\"probetouchplatethickness\":\"" + document.getElementById('preferences_probetouchplatethickness').value;
|
||||
saveprefs += "\",\"surfacewidth\":\"" + document.getElementById('preferences_surfacewidth').value;
|
||||
saveprefs += "\",\"surfacelength\":\"" + document.getElementById('preferences_surfacelength').value;
|
||||
saveprefs += "\",\"surfacezdepth\":\"" + document.getElementById('preferences_surfacezdepth').value;
|
||||
saveprefs += "\",\"surfacebitdiam\":\"" + document.getElementById('preferences_surfacebitdiam').value;
|
||||
saveprefs += "\",\"surfacespindle\":\"" + document.getElementById('preferences_surfacespindle').value;
|
||||
saveprefs += "\",\"surfacefeedrate\":\"" + document.getElementById('preferences_surfacefeedrate').value;
|
||||
saveprefs += "\",\"surfacestepover\":\"" + document.getElementById('preferences_surfacestepover').value;
|
||||
saveprefs += "\",\"interval_positions\":\"" + document.getElementById('preferences_pos_Interval_check').value;
|
||||
saveprefs += "\",\"interval_status\":\"" + document.getElementById('preferences_status_Interval_check').value;
|
||||
saveprefs += "\",\"xy_feedrate\":\"" + document.getElementById('preferences_control_xy_velocity').value;
|
||||
@@ -1136,61 +1017,12 @@ function Checkvalues(id_2_check) {
|
||||
}
|
||||
break;
|
||||
case "preferences_probetouchplatethickness":
|
||||
value = parseFloat(document.getElementById(id_2_check).value);
|
||||
value = parseInt(document.getElementById(id_2_check).value);
|
||||
if (!(!isNaN(value) && value >= 0 && value <= 9999)) {
|
||||
error_message = translate_text_item("Value of probe touch plate thickness must be between 0 mm and 9999 mm !");
|
||||
status = false;
|
||||
}
|
||||
break;
|
||||
case "preferences_surfacewidth":
|
||||
value = parseFloat(document.getElementById(id_2_check).value);
|
||||
if (!(!isNaN(value) && value >= 1 && value <= 9999)) {
|
||||
error_message = translate_text_item("Value of surface width must be between 1 mm and 9999 mm !");
|
||||
status = false;
|
||||
}
|
||||
break;
|
||||
case "preferences_surfacelength":
|
||||
value = parseFloat(document.getElementById(id_2_check).value);
|
||||
if (!(!isNaN(value) && value >= 1 && value <= 9999)) {
|
||||
error_message = translate_text_item("Value of surface length must be between 1 mm and 9999 mm !");
|
||||
status = false;
|
||||
}
|
||||
break;
|
||||
case "preferences_surfacezdepth":
|
||||
value = parseFloat(document.getElementById(id_2_check).value);
|
||||
if (!(!isNaN(value) && value >= 0 && value <= 100)) {
|
||||
error_message = translate_text_item("Value of surface Zdepth must be between 0 mm and 100 mm !");
|
||||
status = false;
|
||||
}
|
||||
break;
|
||||
case "preferences_surfacebitdiam":
|
||||
value = parseFloat(document.getElementById(id_2_check).value);
|
||||
if (!(!isNaN(value) && value >= 0 && value <= 9999)) {
|
||||
error_message = translate_text_item("Value of bit diameter for surfacing must be between 0.1 mm and 999 mm !");
|
||||
status = false;
|
||||
}
|
||||
break;
|
||||
case "preferences_surfacespindle":
|
||||
value = parseInt(document.getElementById(id_2_check).value);
|
||||
if (!(!isNaN(value) && value >= 1000 && value <= 50000)) {
|
||||
error_message = translate_text_item("Value of surfacing spindle RPM must be between 1000 mm and 50000 mm !");
|
||||
status = false;
|
||||
}
|
||||
break;
|
||||
case "preferences_surfacefeedrate":
|
||||
value = parseInt(document.getElementById(id_2_check).value);
|
||||
if (!(!isNaN(value) && value >= 100 && value <= 10000)) {
|
||||
error_message = translate_text_item("Value of surfacing feedrate must be between 100 mm/min and 10000 mm/min !");
|
||||
status = false;
|
||||
}
|
||||
break;
|
||||
case "preferences_surfacestepover":
|
||||
value = parseInt(document.getElementById(id_2_check).value);
|
||||
if (!(!isNaN(value) && value >= 10 && value <= 90)) {
|
||||
error_message = translate_text_item("Value of surfacing stepover must be between 10 % and 90 % !");
|
||||
status = false;
|
||||
}
|
||||
break;
|
||||
case "preferences_filament_length":
|
||||
value = parseInt(document.getElementById(id_2_check).value);
|
||||
if (!(!isNaN(value) && value >= 0.001 && value <= 9999)) {
|
||||
|
||||
@@ -101,6 +101,8 @@ function update_UI_setting() {
|
||||
Set_page_title(setting_configList[i].defaultvalue);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
//to generate setting editor in setting or setup
|
||||
|
||||
@@ -116,9 +116,6 @@
|
||||
<button class="tablinks hide_it" onclick="opentab(event, 'grblprobetab', 'grbluitabscontent', 'grbluitablinks')" id="grblprobetablink">
|
||||
<span translate>Probe</span>
|
||||
</button>
|
||||
<button class="tablinks hide_it" onclick="opentab(event, 'grblsurfacetab', 'grbluitabscontent', 'grbluitablinks')" id="grblsurfacetablink">
|
||||
<span translate>Surfacing Wizard</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body panel-flex-main">
|
||||
@@ -459,91 +456,6 @@
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="grblsurfacetab" class="tabcontent" style="margin: auto;">
|
||||
<table class="table table-bordered table-striped table-hover table-responsive" style='width:auto;'>
|
||||
<tr>
|
||||
<td>
|
||||
<div class = "input-group">
|
||||
<span style='width:150px;' class="input-group-addon form_control"><span translate>Width (X)</span>:</span>
|
||||
<input class="form-control w6" style="text-align: right;" type="number" min="1" max="9999" id="surfacewidth" />
|
||||
<span style='width:80px;' class="input-group-addon form_control" translate>mm</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class = "input-group">
|
||||
<span style='width:150px;' class="input-group-addon form_control"><span translate>Length (Y)</span>:</span>
|
||||
<input class="form-control w6" style="text-align: right;" type="number" min="1" max="9999" id="surfacelength" />
|
||||
<span style='width:80px;' class="input-group-addon form_control" translate>mm</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class = "input-group">
|
||||
<span style='width:150px;' class="input-group-addon form_control"><span translate>Skim Depth (Z-)</span>:</span>
|
||||
<input class="form-control w6" style="text-align: right;" type="number" min="0.1" max="999" id="surfacezdepth" />
|
||||
<span style='width:80px;' class="input-group-addon form_control" translate>mm</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class = "input-group">
|
||||
<span style='width:150px;' class="input-group-addon form_control"><span translate>Bit Diameter</span>:</span>
|
||||
<input class="form-control w6" style="text-align: right;" type="number" min="0.1" max="999" id="surfacebitdiam" />
|
||||
<span style='width:80px;' class="input-group-addon form_control" translate>mm</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class = "input-group">
|
||||
<span style='width:150px;' class="input-group-addon form_control"><span translate>Stepover</span>:</span>
|
||||
<input class="form-control w6" style="text-align: right;" type="number" min="0" max="99" id="surfacestepover" />
|
||||
<span style='width:80px;' class="input-group-addon form_control" translate>%</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class = "input-group">
|
||||
<span style='width:150px;' class="input-group-addon form_control"><span translate>Feedrate</span>:</span>
|
||||
<input class="form-control w6" style="text-align: right;" type="number" min="500" max="10000" id="surfacefeedrate" />
|
||||
<span style='width:80px;' class="input-group-addon form_control" translate>mm/min</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class = "input-group">
|
||||
<span style='width:150px;' class="input-group-addon form_control"><span translate>Spindle RPM</span>:</span>
|
||||
<input class="form-control w6" style="text-align: right;" type="number" min="500" max="50000" id="surfacespindle" />
|
||||
<span style='width:80px;' class="input-group-addon form_control" translate>RPM</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="hide_it" id="surfacingtext">
|
||||
<table>
|
||||
<tr>
|
||||
<td><span translate>Surfacing...</span></td>
|
||||
<td>
|
||||
<div class="loader" style="width:2em;height:2em;"></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</span>
|
||||
<button class="btn btn-primary" id="surfacebtn" onclick="StartSurfaceProcess();" translate>Start Surfacing</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -462,172 +462,6 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="panel panel-default" id="grbl_pref_surface_tab">
|
||||
<div class="panel-heading">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" id="show_grbl_surface_tab" onclick="prefs_toggledisplay('show_grbl_surface_tab')" />
|
||||
<span translate>Show surface panel</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div id="grbl_surface_preferences" class="panel-body">
|
||||
<div id="preferences_surfacewidth_group">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<span><span translate>Surface Width (X)</span>: </span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group has-control">
|
||||
<input class="form-control w6" type="number" min="1" max="99999" id="preferences_surfacewidth" onchange="Checkvalues('preferences_surfacewidth')" />
|
||||
<span id="preferences_surfacewidth_icon" class="form-control-feedback ico_feedback"></span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group">
|
||||
<input class="hide_it"></input>
|
||||
<span class="input-group-addon form_control" translate>mm</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<br>
|
||||
<div id="preferences_surfacelength_group">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<span><span translate>Surface Length (Y)</span>: </span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group has-control">
|
||||
<input class="form-control w6" type="number" min="1" max="99999" id="preferences_surfacelength" onchange="Checkvalues('preferences_surfacelength')" />
|
||||
<span id="preferences_surfacelength_icon" class="form-control-feedback ico_feedback"></span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group">
|
||||
<input class="hide_it"></input>
|
||||
<span class="input-group-addon form_control" translate>mm</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<br>
|
||||
<div id="preferences_surfacezdepth_group">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<span><span translate>Skim Depth (-Z)</span>: </span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group has-control">
|
||||
<input class="form-control w5" type="number" min="0.1" max="9999" id="preferences_surfacezdepth" onchange="Checkvalues('preferences_surfacezdepth')" />
|
||||
<span id="preferences_surfacezdepth_icon" class="form-control-feedback ico_feedback"></span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group">
|
||||
<input class="hide_it"></input>
|
||||
<span class="input-group-addon form_control" translate>mm</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<br>
|
||||
<div id="preferences_surfacebitdiam_group">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<span><span translate>Bit Diameter</span>: </span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group has-control">
|
||||
<input class="form-control w6" type="number" min="0.1" max="999" id="preferences_surfacebitdiam" onchange="Checkvalues('preferences_surfacebitdiam')" />
|
||||
<span id="preferences_surfacebitdiam_icon" class="form-control-feedback ico_feedback"></span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group">
|
||||
<input class="hide_it"></input>
|
||||
<span class="input-group-addon form_control" translate>mm</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<br>
|
||||
<div id="preferences_surfacestepover_group">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<span><span translate>Surfacing Stepover</span>: </span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group has-control">
|
||||
<input class="form-control w5" type="number" min="1" max="100" id="preferences_surfacestepover" onchange="Checkvalues('preferences_surfacestepover')" />
|
||||
<span id="preferences_surfacestepover_icon" class="form-control-feedback ico_feedback"></span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group">
|
||||
<input class="hide_it"></input>
|
||||
<span class="input-group-addon form_control" translate>mm</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<br>
|
||||
<div id="preferences_surfacefeedrate_group">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<span><span translate>Surfacing Feedrate</span>: </span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group has-control">
|
||||
<input class="form-control w6" type="number" min="1" max="99999" id="preferences_surfacefeedrate" onchange="Checkvalues('preferences_surfacefeedrate')" />
|
||||
<span id="preferences_surfacefeedrate_icon" class="form-control-feedback ico_feedback"></span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group">
|
||||
<input class="hide_it"></input>
|
||||
<span class="input-group-addon form_control" translate>mm</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<br>
|
||||
<div id="preferences_surfacespindle_group">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<span><span translate>Surfacing Spindle RPM</span>: </span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group has-control">
|
||||
<input class="form-control w6" type="number" min="0" max="99999" id="preferences_surfacespindle" onchange="Checkvalues('preferences_surfacespindle')" />
|
||||
<span id="preferences_surfacespindle_icon" class="form-control-feedback ico_feedback"></span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group">
|
||||
<input class="hide_it"></input>
|
||||
<span class="input-group-addon form_control" translate>mm</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
|
||||
Reference in New Issue
Block a user