model_building_utils.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. let canvas = "#div_canvas";
  2. function build_div(element_type, num){
  3. return element_type + (num) + "\\2e instance";
  4. }
  5. function get_element_div(type, num) {
  6. return "#\\2f Formalisms\\2f __LanguageSyntax__\\2f SimpleClassDiagram\\2f SimpleClassDiagram\\2e umlIcons\\2f " + (type) + "\\2f " + (num) + "\\2e instance";
  7. }
  8. function get_class_div(num) {
  9. return get_element_div("ClassIcon", num);
  10. }
  11. function get_assoc_div(num) {
  12. return get_element_div("AssociationLink", num) + " > text:nth-child(1)";
  13. }
  14. function create_classes(client, x_coords, y_coords, curr_num_elements, element_type) {
  15. for (let x of x_coords) {
  16. for (let y of y_coords) {
  17. let class_div = "";
  18. if (element_type != undefined){
  19. class_div = element_type + (curr_num_elements) + "\\2e instance";
  20. } else {
  21. class_div = this.get_class_div(curr_num_elements);
  22. }
  23. client
  24. .moveToElement(canvas, x, y)
  25. .mouseButtonClick('right')
  26. .pause(500)
  27. .waitForElementPresent(class_div, 500, "Created class: " + class_div);
  28. curr_num_elements++;
  29. }
  30. }
  31. return curr_num_elements;
  32. }
  33. function set_attribs(client, num, attrs, element_type) {
  34. let class_div = "";
  35. if (element_type != undefined){
  36. class_div = element_type + (num) + "\\2e instance";
  37. } else {
  38. class_div = this.get_class_div(num);
  39. }
  40. client.moveToElement(class_div, 10, 10)
  41. .mouseButtonClick('middle')
  42. .waitForElementPresent("#dialog_btn", 1000, "Editing menu opens");
  43. for (const [key, value] of Object.entries(attrs)) {
  44. client
  45. .clearValue(key)
  46. .setValue(key, value);
  47. }
  48. client
  49. .click("#dialog_btn")
  50. .waitForElementNotPresent("#dialog_btn", 1000, "Editing menu closes")
  51. .moveToElement(canvas, 0, 100)
  52. .mouseButtonClick('left')
  53. .pause(500)
  54. ;
  55. }
  56. function move_to_element_ratio(client, element, x_ratio, y_ratio){
  57. client.getElementSize(element, function (result) {
  58. let x_pos = x_ratio/100 * result.value.width;
  59. let y_pos = y_ratio/100 * result.value.height;
  60. client.moveToElement(element, x_pos, y_pos);
  61. });
  62. }
  63. module.exports = {
  64. '@disabled': true,
  65. get_element_div,
  66. get_assoc_div,
  67. get_class_div,
  68. build_div,
  69. create_classes,
  70. set_attribs,
  71. move_to_element_ratio
  72. };