function ModuleAccessoires() {
|
this.toggleCategory = this.toggleCategory.bind(this);
|
this.moduleElement = $("<div></div>");
|
this.dimensions = [];
|
this.devStatus = dh_developerStatusGet() === "1";
|
this.gltfFileList = undefined;
|
|
// Vorerst nur im DEV-Modus einen Eintrag für 3d-Importe erstellen
|
if (this.devStatus) {
|
definedAccessoiresCategories.push(new ArticleCategory(1, "dhacces_3dimports", dh_text_global("fv.generickatatree.import3d"), 0, undefined, undefined));
|
definedAccessoiresCategories.push(new ArticleCategory(2, "dhacces_3dimports_gltf", "GLTF", 0, undefined, undefined));
|
}
|
}
|
|
ModuleAccessoires.prototype.build = function () {
|
this.moduleElement.addClass("module");
|
this.moduleElement.addClass("accessoires");
|
this.moduleElement.addClass(this.id);
|
if (this.articles.length > 0) {
|
if (this.moduleFilterCategories.length > 0) {
|
this.buildTopCategories();
|
}
|
}
|
this.articles.forEach(function (article) {
|
article.catArray = [];
|
article.artCategories.forEach(function (cat) {
|
article.catArray.push(cat.id);
|
})
|
})
|
|
return this.moduleElement;
|
};
|
|
ModuleAccessoires.prototype.buildUI = function () {
|
return $("<div></div>");
|
};
|
|
ModuleAccessoires.prototype.buildTopCategories = function () {
|
var self = this;
|
var topCats = FurnplanCommunicationService.GetCatsByPrio("_global", "1");
|
|
if (this.devStatus) {
|
topCats.push(["dhacces_3dimports"]);
|
}
|
|
self.moduleElement.append(self.appendSubCategories(topCats, "1"));
|
};
|
|
ModuleAccessoires.prototype.appendSubCategories = function (categories, prio) {
|
var self = this;
|
var container = $("<div></div>");
|
categories.forEach(function (tmpCat, index) {
|
if ((prio === "1" && tmpCat[0] !== "dhacces_dev" && !self.devStatus) || prio !== "1" || (prio === "1" && self.devStatus)) {
|
var category = definedAccessoiresCategories.find(function (cat) {
|
return cat.id === tmpCat[0];
|
});
|
var baseMargin = 15;
|
var location = dh_getpath_manufacturer() + "/_global/acce/html/kata-images/" + category.id + ".png";
|
location = location.replace(/([A-Za-z]:.+?manufacturer[\\\/])(.+)/ig, "/furnplan/$2");
|
|
var tblElement = $('<table></table>');
|
var tblRow = $("<tr></tr>");
|
|
// var prioMarging = (baseMargin * prio).toString() + "px";
|
var tblCellImg = $("<td class='acce_spacer'></td>");
|
// tblCellImg.css("width", prioMarging);
|
var image = $("<img/>").attr("src", location);
|
|
var tblCellText = $("<td></td>");
|
tblCellText.on("selectstart", function () {
|
return false;
|
});
|
tblCellText.html(category.name);
|
|
var tblCellTrigger = $('<td style="width:20px;height:20px;"></td>');
|
var trigger = $('<div class="trigger"></div>');
|
tblCellTrigger.append(trigger);
|
tblRow.append(tblCellImg);
|
tblRow.append(tblCellText);
|
tblRow.append(tblCellTrigger);
|
tblElement.append(tblRow);
|
tblElement.attr("data-cat", category.id);
|
tblElement.attr("data-prio", prio);
|
tblElement.addClass("prioControl");
|
tblElement.addClass("prio" + prio);
|
if (prio === "1") {
|
tblCellImg.append(image);
|
}
|
tblElement.click(self.toggleCategory);
|
if (self.cfg["CategoriesToHide"].indexOf(tmpCat[0]) < 0) {
|
container.append(tblElement);
|
}
|
}
|
});
|
return container;
|
};
|
|
ModuleAccessoires.prototype.toggleCategory = function (e) {
|
var self = this;
|
var element = $(e.currentTarget);
|
var clickedCat = $(element).attr("data-cat");
|
var clickedPrio = $(element).attr("data-prio");
|
if ($(element).attr("data-loaded") !== "true") {
|
var subCats = [];
|
if (clickedCat === "dhacces_3dimports") {
|
subCats.push(["dhacces_3dimports_gltf"]);
|
clickedPrio = 1;
|
} else {
|
subCats = FurnplanCommunicationService.GetSubCatsByPrio("_global", (+clickedPrio + 1).toString(), clickedCat);
|
}
|
$(element).attr("data-loaded", "true");
|
if (subCats.length > 0) {
|
$(element).after(self.appendSubCategories(subCats, (+clickedPrio + 1)));
|
} else {
|
$(element).after(self.loadCategoryArticles(clickedCat));
|
// $(element).next().toggle("blind", {}, 500);
|
$(element).next().toggle();
|
}
|
} else {
|
// $(element).next().toggle("blind", {}, 500);
|
$(element).next().toggle();
|
}
|
|
element.toggleClass("active");
|
};
|
|
ModuleAccessoires.prototype.loadCategoryArticles = function (category, embedded) {
|
var self = this;
|
if (category === "dhacces_3dimports_gltf") {
|
var articleContainer = $("<div class='articleList'></div>");
|
articleContainer.append(self.getGLTFContainer());
|
|
articleContainer.hide();
|
return articleContainer;
|
} else {
|
var categoryObj = definedAccessoiresCategories.find(function (cat) {
|
return cat.id === category;
|
});
|
|
if (embedded) {
|
self.moduleElement.addClass("module");
|
self.moduleElement.addClass("accessoires");
|
self.articles.forEach(function (article) {
|
article.catArray = [];
|
article.artCategories.forEach(function (cat) {
|
article.catArray.push(cat.id);
|
})
|
})
|
}
|
|
|
var tvInches = [];
|
var articleContainer = $("<div class='articleList'></div>");
|
var classPrio = "prio" + categoryObj.priority;
|
articleContainer.addClass(classPrio);
|
|
if (categoryObj.logo !== undefined) {
|
var logoContainer = $("<div class='logo'></div>");
|
var location = dh_getpath_manufacturer() + "/_global/acce/html/kata-images/logos/" + categoryObj.logo;
|
location = location.replace(/([A-Za-z]:.+?manufacturer[\\\/])(.+)/ig, "/furnplan/$2");
|
|
var imageLogo = $('<img class="kataImages"/>').attr("src", location);
|
imageLogo.css("width", "200px");
|
logoContainer.click(function (params) {
|
openLinkInDefaultBrowser(categoryObj.link);
|
// alert(categoryObj.link);
|
})
|
logoContainer.append(imageLogo);
|
articleContainer.append(logoContainer);
|
}
|
|
var filterArticles = this.articles.filter(function (art) {
|
return art.artCategories.find(function (cat) {
|
return cat.id === category;
|
});
|
});
|
|
filterArticles.forEach(function (art) {
|
if ((art.catArray.indexOf("dhacces_dev") > -1) && !self.devStatus) { } else {
|
if (art.artNo === "VARIOFORM") {
|
articleContainer.append(ModuleAccessoires.getVarioFormContainer());
|
} else if (art.artNo.startsWith("TV-MAPPED-HANGING-") || art.artNo.startsWith("TV-MAPPED-STANDING-")) {
|
var inch = art.artNo.replace("TV-MAPPED-HANGING-", "").replace("TV-MAPPED-STANDING-", "");
|
if (tvInches.indexOf(inch) === -1) {
|
tvInches.push(inch);
|
}
|
} else {
|
if (category === "dhacces_dev" || category === "dhacces_bgstruktur") {
|
var artContainer = $("<div></div>");
|
var image = $('<img class="kataImages"/>').attr("src", art.imgURL());
|
var text = $('<div>' + art.artNo + '</div>');
|
image.click(function () {
|
dh_todo(0, art.artNo, "", "", "acce", "", "", "", "", "", "_global");
|
});
|
artContainer.append(image);
|
artContainer.append(text);
|
articleContainer.append(artContainer);
|
} else {
|
var artContainer = $("<div class='article'></div>");
|
var image = $('<img class="kataImages"/>').attr("src", art.imgURL());
|
image.click(function () {
|
dh_todo(0, art.artNo, "", "", "acce", "", "", "", "", "", "_global");
|
});
|
artContainer.append(image);
|
articleContainer.append(artContainer);
|
}
|
}
|
|
}
|
});
|
if (tvInches.length > 0) {
|
articleContainer.append(ModuleAccessoires.getTvMappedContainer(tvInches));
|
}
|
if (!embedded) {
|
articleContainer.hide();
|
return articleContainer;
|
} else {
|
self.moduleElement.append(articleContainer);
|
return self.moduleElement;
|
}
|
}
|
};
|
|
|
ModuleAccessoires.prototype.getGLTFContainer = function () {
|
var self = this;
|
var container = $("<div></div>");
|
var fieldSet = $("<fieldset></fieldset>");
|
fieldSet.addClass("importBox");
|
var legend = $("<legend>Datei importieren</legend>");
|
|
var labelImportName = $("<label>Name:</label>");
|
labelImportName.attr("for", "inputImportName");
|
|
var inputImportName = $("<input>");
|
inputImportName.attr("name", "inputImportName");
|
inputImportName.attr("id", "inputImportName");
|
inputImportName.attr("type", "text");
|
|
var labelSelectFile = $("<label>Datei:</label>");
|
labelSelectFile.attr("for", "inputImportFile");
|
|
var inputImportFile = $("<input>");
|
inputImportFile.addClass("fullWidth");
|
inputImportFile.attr("name", "inputImportFile");
|
inputImportFile.attr("id", "inputImportFile");
|
inputImportFile.attr("type", "button");
|
inputImportFile.attr("value", "Datei auswählen");
|
|
inputImportFile.click(function () {
|
// DW [2026|06|02] https://joope.de/issues/82086 Wenn kein Name angegeben wird,
|
// wird der Dateiname in der ImportGLTF Methode als Name gesetzt
|
// if (inputImportName.val() !== "") {
|
// var data = DoSyncFPSAction("ImportGLTF", [inputImportName.val()]);
|
// if (data.success) {
|
// alert(data.responseText);
|
// } else {
|
// alert(data.responseText);
|
// }
|
// self.refreshGLTFContainer();
|
// } else {
|
// alert("Kein Name angegeben");
|
// }
|
|
var data = DoSyncFPSAction("ImportGLTF", [inputImportName.val()]);
|
if (data.success) {
|
alert(data.responseText);
|
} else {
|
alert(data.responseText);
|
}
|
self.refreshGLTFContainer();
|
});
|
|
fieldSet.append(legend);
|
fieldSet.append(labelImportName);
|
fieldSet.append($("<br>"));
|
fieldSet.append(inputImportName);
|
fieldSet.append($("<br>"));
|
fieldSet.append(labelSelectFile);
|
fieldSet.append($("<br>"));
|
fieldSet.append(inputImportFile);
|
container.append(fieldSet);
|
|
|
this.gltfFileList = $("<table></table>");
|
this.gltfFileList.addClass("importDialog");
|
container.append(this.gltfFileList);
|
|
self.refreshGLTFContainer();
|
|
return container;
|
}
|
|
ModuleAccessoires.prototype.refreshGLTFContainer = function () {
|
var self = this;
|
var data = DoSyncFPSAction("ListGLTF", []);
|
//Liste löschen
|
this.gltfFileList.empty();
|
//Liste neu befüllen
|
data.imports.forEach(function (entry, index_imports) {
|
|
var row1 = $("<tr></tr");
|
var row1col = $("<td></td");
|
row1col.addClass("importName");
|
row1col.text(entry.text);
|
|
var row2 = $("<tr></tr");
|
var row2col = $("<td>Skalierung:</td");
|
var select = $("<select style='width: 95%;'></select");
|
entry.Scalings.forEach(function (scale, index) {
|
var option = $("<option></option>");
|
option.val(index);
|
option.text("X:" + (scale.scaledDimX / 10).toFixed(2) + "cm Y:" + (scale.scaledDimY / 10).toFixed(2) + "cm Z:" + (scale.scaledDimZ / 10).toFixed(2) + "cm");
|
select.append(option);
|
});
|
row2col.append(select);
|
|
var row3 = $("<tr></tr");
|
var row3col = $("<td></td");
|
|
var insertIcon = $("<button>Einfügen</button>");
|
insertIcon.click(function () {
|
self.loadGLTF(entry.id, select.val());
|
});
|
row3col.append(insertIcon);
|
|
var deleteIcon = $("<button>Löschen</button>");
|
deleteIcon.click(function () {
|
self.deleteGLTFContainer(entry.id);
|
});
|
row3col.append(deleteIcon);
|
|
row1.append(row1col);
|
row2.append(row2col);
|
row3.append(row3col);
|
|
var row4 = $("<tr></tr");
|
var row4col = $("<td></td");
|
row4.append(row4col);
|
|
// if (index_imports != data.imports.length - 1) {
|
// row4col.addClass("borderd");
|
// }
|
|
self.gltfFileList.append(row1);
|
self.gltfFileList.append(row2);
|
self.gltfFileList.append(row3);
|
self.gltfFileList.append(row4);
|
});
|
|
// this.gltfFileList.append(listElement);
|
|
}
|
|
ModuleAccessoires.prototype.deleteGLTFContainer = function (id) {
|
var data = DoSyncFPSAction("DeleteGLTF", [id]);
|
if (data.success) {
|
alert("GLTF gelöscht");
|
} else {
|
alert("GLTF nicht gelöscht");
|
}
|
this.refreshGLTFContainer();
|
};
|
|
ModuleAccessoires.prototype.loadGLTF = function (id, scalIndex) {
|
var data = DoSyncFPSAction("loadGLTF", [id, scalIndex]);
|
};
|
|
ModuleAccessoires.getTvMappedContainer = function (tvInches) {
|
var tbl = $('<table style="width:200px;"></table>');
|
|
var trTh = $("<tr></tr>");
|
var tr1 = $("<tr></tr>");
|
var tr2 = $("<tr></tr>");
|
var tr3 = $("<tr></tr>");
|
|
var th = $('<th colspan="3"></th>');
|
th.text(dh_text_global("fv.generickatatree.indiviuell_tv"));
|
trTh.append(th);
|
|
var td1_1 = $("<td></td>");
|
var td2_1 = $("<td></td>");
|
var td3_1 = $("<td></td>");
|
tr1.append(td1_1);
|
tr1.append(td2_1);
|
tr1.append(td3_1);
|
|
var td1_2 = $("<td></td>");
|
var td2_2 = $("<td></td>");
|
var td3_2 = $("<td></td>");
|
tr2.append(td1_2);
|
tr2.append(td2_2);
|
tr2.append(td3_2);
|
|
var td1_3 = $("<td></td>");
|
var td2_3 = $("<td></td>");
|
var td3_3 = $("<td></td>");
|
tr3.append(td1_3);
|
tr3.append(td2_3);
|
tr3.append(td3_3);
|
|
var location = dh_getpath_manufacturer() + "/_global/acce/html/kata-images/flat_foot.png";
|
location = location.replace(/([A-Za-z]:.+?manufacturer[\\\/])(.+)/ig, "/furnplan/$2");
|
|
var imageStanding = $('<img class="kataImages"/>').attr("src", location);
|
imageStanding.click(function (params) {
|
PlaceAccessoire('_global', 'acce', "tv-mapped-standing-" + dropDownInches.val());
|
});
|
td1_1.append(imageStanding);
|
|
var location = dh_getpath_manufacturer() + "/_global/acce/html/kata-images/tv_flat_black.png";
|
location = location.replace(/([A-Za-z]:.+?manufacturer[\\\/])(.+)/ig, "/furnplan/$2");
|
|
var imageHanging = $('<img class="kataImages"/>').attr("src", location);
|
imageHanging.click(function (params) {
|
PlaceAccessoire('_global', 'acce', "tv-mapped-hanging-" + dropDownInches.val());
|
});
|
td2_1.append(imageHanging);
|
|
var dropDownInches = $("<select></select>");
|
tvInches.forEach(function (value, index) {
|
var option = $('<option value="' + value + '">' + value + ' Zoll</option>');
|
dropDownInches.append(option);
|
});
|
td3_1.append(dropDownInches);
|
|
var location = dh_getpath_manufacturer() + "/_global/acce/html/kata-images/tv-screen-images/desert.jpg";
|
location = location.replace(/([A-Za-z]:.+?manufacturer[\\\/])(.+)/ig, "/furnplan/$2");
|
|
var image11 = $('<img class="kataImages"/>').attr("src", location);
|
image11.click(function (params) {
|
setGlobalMaterial('tv_screen_desert', 'accessoires', 'global');
|
});
|
td1_2.append(image11);
|
|
var location = dh_getpath_manufacturer() + "/_global/acce/html/kata-images/tv-screen-images/forest.jpg";
|
location = location.replace(/([A-Za-z]:.+?manufacturer[\\\/])(.+)/ig, "/furnplan/$2");
|
|
var image12 = $('<img class="kataImages"/>').attr("src", location);
|
image12.click(function (params) {
|
setGlobalMaterial('tv_screen_forest', 'accessoires', 'global');
|
});
|
td2_2.append(image12);
|
|
var location = dh_getpath_manufacturer() + "/_global/acce/html/kata-images/tv-screen-images/waterfall.jpg";
|
location = location.replace(/([A-Za-z]:.+?manufacturer[\\\/])(.+)/ig, "/furnplan/$2");
|
|
var image13 = $('<img class="kataImages"/>').attr("src", location);
|
image13.click(function (params) {
|
setGlobalMaterial('tv_screen_waterfall', 'accessoires', 'global')
|
});
|
td3_2.append(image13);
|
|
var location = dh_getpath_manufacturer() + "/_global/acce/html/kata-images/tv-screen-images/lake.jpg";
|
location = location.replace(/([A-Za-z]:.+?manufacturer[\\\/])(.+)/ig, "/furnplan/$2");
|
|
var image21 = $('<img class="kataImages"/>').attr("src", location);
|
image21.click(function (params) {
|
setGlobalMaterial('tv_screen_lake', 'accessoires', 'global');
|
});
|
td1_3.append(image21);
|
|
var location = dh_getpath_manufacturer() + "/_global/acce/html/kata-images/tv-screen-images/hamburg.jpg"
|
location = location.replace(/([A-Za-z]:.+?manufacturer[\\\/])(.+)/ig, "/furnplan/$2");
|
|
var image22 = $('<img class="kataImages"/>').attr("src", location);
|
image22.click(function (params) {
|
setGlobalMaterial('tv_screen_hamburg', 'accessoires', 'global');
|
});
|
td2_3.append(image22);
|
|
var location = dh_getpath_manufacturer() + "/_global/acce/html/kata-images/tv-screen-images/tagesschau.jpg";
|
location = location.replace(/([A-Za-z]:.+?manufacturer[\\\/])(.+)/ig, "/furnplan/$2");
|
|
var image23 = $('<img class="kataImages"/>').attr("src", location);
|
image23.click(function (params) {
|
setGlobalMaterial('tv_screen_01', 'accessoires', 'global');
|
});
|
td3_3.append(image23);
|
|
tbl.append(trTh);
|
tbl.append(tr1);
|
tbl.append(tr2);
|
tbl.append(tr3);
|
|
return tbl;
|
};
|
|
|
ModuleAccessoires.getVarioFormContainer = function () {
|
var tbl = $("<table></table>");
|
|
var tr1 = $("<tr></tr>");
|
var tr2 = $("<tr></tr>");
|
var tr3 = $("<tr></tr>");
|
var tr4 = $("<tr></tr>");
|
var tr5 = $("<tr></tr>");
|
var tr6 = $("<tr></tr>");
|
|
var tdLeft = $('<td rowspan="6"></td>');
|
var td1Right = $("<td></td>");
|
var td2Right = $("<td></td>");
|
var td3Right = $("<td></td>");
|
var td4Right = $("<td></td>");
|
var td5Right = $("<td></td>");
|
var td6Right = $("<td></td>");
|
|
tr1.append(tdLeft);
|
tr1.append(td1Right);
|
tr2.append(td2Right);
|
tr3.append(td3Right);
|
tr4.append(td4Right);
|
tr5.append(td5Right);
|
tr6.append(td6Right);
|
|
tbl.append(tr1);
|
tbl.append(tr2);
|
tbl.append(tr3);
|
tbl.append(tr4);
|
tbl.append(tr5);
|
tbl.append(tr6);
|
|
var location = dh_getpath_manufacturer() + "/_global/acce/html/kata-images/VarioForm.png";
|
location = location.replace(/([A-Za-z]:.+?manufacturer[\\\/])(.+)/ig, "/furnplan/$2");
|
|
var img = $("<img/>").attr("src", location);
|
img.click(function (params) {
|
ModuleAccessoires.placeVarioForm(ParseToFloatWithComma(inputX.val()), ParseToFloatWithComma(inputY.val()), ParseToFloatWithComma(inputZ.val()))
|
});
|
tdLeft.append(img);
|
|
td1Right.text(dh_text_global("fv.generickatatree.width") + "(cm)");
|
td3Right.text(dh_text_global("fv.generickatatree.depth") + "(cm");
|
td5Right.text(dh_text_global("fv.generickatatree.height") + "(cm)");
|
|
var inputX = $('<input value="100" type="text" size="6"></input');
|
var inputY = $('<input value="100" type="text" size="6"></input');
|
var inputZ = $('<input value="100" type="text" size="6"></input');
|
|
td2Right.append(inputX);
|
td4Right.append(inputY);
|
td6Right.append(inputZ);
|
|
return tbl;
|
};
|
|
|
ModuleAccessoires.placeVarioForm = function (dx, dy, dz, Variotype) {
|
var classid = 90016;
|
|
topWindow.app.DhMcControl.SysLong(2).value = -10;
|
// topWindow.app.DhMcControl.SysLong(2).value = 0; // PickLevel auf 0 setzen
|
topWindow.app.DhMcControl.SysLong(1).value = 0; //ActionMode auf PowerGrip setzen
|
topWindow.app.DhMcControl.DoActionSimple(100011); //ResetPickDrop
|
//topWindow.app.DhMcControl.StringValueDest(32, 5555).value = "Teppich";
|
//topWindow.app.DhMcControl.StringValueDest(32, 5555).value = "WandPanel";
|
topWindow.app.DhMcControl.StringValueDest(32, 5555).value = Variotype;
|
|
topWindow.app.DhMcControl.DoActionSpecial( //Das eigentliche plazieren auslösen
|
100009,
|
classid, //Einzufügende Klasse
|
0,
|
0.0, 0.0, 0.0, //Position
|
dx * 10, dy * 10, dz * 10, //Dimension
|
0.0, 0.0, 0.0, //Rotation
|
0.0);
|
topWindow.app.DhMcControl.DoAction(100008, 2, 0, 0, 0.0, 0.0, 0.0); //RunPickDrop
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|