design.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714
  1. //delete = delets from DB
  2. //remove = removes from HTML
  3. //save = save to DB
  4. //add = changes HTML
  5. //get = get from DB
  6. //new = changes HTML
  7. var pictureWidth = 1280;
  8. var pictureHeight = 720;
  9. function overlayOn(value, special="") {
  10. if(special == "image" || special == "assigment"){
  11. url = "https://centurio.work/customers/evva/universal-storage/ui/?iframe&path=Stationsbilder/Gesamtbilder/Station3"
  12. }
  13. else{
  14. url = "https://centurio.work/customers/evva/universal-storage/ui/?iframe"
  15. }
  16. document.getElementById("overlay").style.display = "block";
  17. var iframe = $('#overlaycontentsize').append("<iframe id='overlaycontent' src='" + url + "' width='1800' height='800'></iframe>");
  18. iframe.find("#overlaycontent").bind('load',{"ka": value}, function(event){
  19. var ref = this.contentWindow.ref;
  20. //You can think that ref = $(this.contentWindow.test) but thery are different
  21. //they are two diferent references this might be a bug
  22. ref.bind('getUrl',{"xyz": event.data.ka}, function(event, extra1){
  23. var data = event.data
  24. overlayOff();
  25. //fill input with url
  26. if(special == ""){
  27. $(data.xyz).parent().parent().find(".abbreviationInput").val(extra1.url)
  28. }
  29. else if (special == "assigment"){
  30. $(data.xyz).parent().parent().find(".abbreviationInput").val(extra1.url)
  31. getImgText(extra1.url)
  32. }
  33. else if (special == "image"){
  34. clearForm();
  35. //hide current image
  36. var newSrc = extra1.url + "?rand=" + Math.random();
  37. image = new Image();
  38. $("#sliceImg").hide("puff")
  39. //show new image and perform a resize of the rectangle
  40. image.onload = function() {
  41. $("#sliceImg").hide("puff", function() {
  42. $(this).attr("src", newSrc).show("fold");
  43. resizeAllRect();
  44. fillFormName(extra1.url.substring(extra1.url.lastIndexOf('/') + 1).replace(/\.[^/.]+$/, ""));
  45. });
  46. }
  47. image.src = newSrc;
  48. // $("#sliceImg").attr("src",extra1.url + "?rand=" + Math.random() )
  49. // resizeAllRect()
  50. }
  51. });
  52. });
  53. }
  54. function overlayOnImg(data) {
  55. var url = new URL("" + data, document.baseURI).href
  56. document.getElementById("overlay").style.display = "block";
  57. const imageext = ["png", "jpg", "svg"]
  58. const movieext = ["mp4"]
  59. var ext = url.substr(url.lastIndexOf('.') + 1);
  60. if(imageext.includes(ext)){
  61. $('#overlaycontentsize').load(url, function(){
  62. var width = $(this).children("svg").attr("width")
  63. var height = $(this).children("svg").attr("height")
  64. $(this).children("svg").attr("viewBox","0 0 " + width + " " + height);
  65. $(this).children("svg").attr("width",window.innerWidth * 0.7);
  66. $(this).children("svg").attr("height",window.innerHeight *0.7);
  67. });
  68. }
  69. else if(movieext.includes(ext)){
  70. $('#overlaycontentsize').append("<video id='overlaycontent' controls> <source src=" + url + " type=\"video/mp4\">Your browser does not support the video tag.</video>");
  71. }
  72. else{
  73. $('#overlaycontentsize').append("<iframe id='overlaycontent' src=" + url + "></iframe>");
  74. }
  75. }
  76. function overlayOff() {
  77. document.getElementById("overlay").style.display = "none";
  78. $('#overlaycontentsize').text("");
  79. document.getElementById("overlayNotClickable").style.display = "none";
  80. $('#overlaycontentsizeNotClickable').text("");
  81. }
  82. function saveStation() { //Save 2 DB
  83. if (confirm('Are you really, really, REALLY sure you want to create a New Station?')) {
  84. $.ajax({
  85. type: "POST",
  86. url: "../server/",
  87. success: function(res) {
  88. location.reload();
  89. }
  90. });
  91. }
  92. }
  93. function getStations(stationID , patternID ){ //Get DB 2 HTML
  94. $('#stations').text("");
  95. $.ajax({
  96. type: "GET",
  97. url: "../server/",
  98. dataType: "xml",
  99. success: function(xml) {
  100. $(xml).find('station').each(function(index){
  101. var clone = document.importNode(document.querySelector('#line').content,true);
  102. $('[data-class=station]',clone).text($(this).attr('id'));
  103. $('[data-class=pattern] a',clone).before("[");
  104. $('[data-class=pattern] a',clone).text("Add Pattern");
  105. $('[data-class=pattern] a',clone).after("]");
  106. $('[data-class=pattern] a',clone).attr('href','javascript:newPattern('+ $(this).attr('id') + ');');
  107. $('[data-class=duplicate]',clone).text("");
  108. $('[data-class=delete]',clone).text("");
  109. $('#stations').append(clone);
  110. var curstation=$(this).attr('id');
  111. $(this).find('pattern').each(function(index){
  112. var clonePattern = document.importNode(document.querySelector('#line').content,true);
  113. $('[data-class=pattern] a',clonePattern).text($(this).find('parts').children().map(function(i, element){return $(element).text()}).get().join("."));
  114. $('[data-class=pattern] a',clonePattern).attr('href','javascript:getPattern(' + curstation + ','+ $(this).attr('id') + ');');
  115. $('[data-class=date]',clonePattern).text($.format.date(Date.parse($(this).attr('changed')), 'yyyy/MM/dd HH:mm:ss'));
  116. $('[data-class=duplicate] a',clonePattern).attr('href','javascript:duplicatePattern(' + curstation + ','+ $(this).attr('id') + ');');
  117. $('[data-class=delete] a',clonePattern).attr('href','javascript:deletePattern(' + curstation + ','+ $(this).attr('id') + ');');
  118. if (patternID != null && patternID == $(this).attr('id')){
  119. $('tr',clonePattern).css("background-color","#99cce6");
  120. }
  121. $('#stations').append(clonePattern);
  122. });
  123. });
  124. }
  125. });
  126. }
  127. function newPattern(stationID) { //HTML
  128. getPattern(stationID);
  129. }
  130. function getPattern(stationID, patternID){ //Get DB 2 HTML
  131. getStations(stationID, patternID)
  132. //rest Pattern
  133. abk.forEach(function(item){
  134. $("#FormPattern_Form_" + item).val();
  135. $("#FormPattern_Form_" + item).val($("#FormPattern_Form_" + item + " option:first").val());
  136. });
  137. if (patternID == null){
  138. $('#patternform').attr('onsubmit', "savePattern("+stationID+")");
  139. $('#pattern_ID').text("");
  140. $('#pattern_description').val("");
  141. $('#imageListing').text("");
  142. $('#images').css("display", "none");
  143. $('#remove_pattern').css("display", "none");
  144. $('#error').css("display", "none");
  145. $('#replacements').css("display", "none");
  146. }
  147. else{
  148. $('#patternform').attr('onsubmit', "saveChangedPattern("+stationID+","+ patternID +")");
  149. $('#pattern_ID').text(patternID);
  150. getImages(stationID, patternID);
  151. $('#remove_pattern').css("display", "block");
  152. $('#remove_pattern').attr('onclick', "javascript:deletePattern("+stationID+","+ patternID +")");
  153. getError(stationID, patternID);
  154. getReplaceImages(stationID, patternID);
  155. $.ajax({
  156. type: "GET",
  157. url: "../server/"+stationID+ "/" + patternID,
  158. dataType: "xml",
  159. success: function(xml) {
  160. $(xml).find('parts').children().each(function(index){
  161. /*
  162. $(this).find('pattern').each(function(index){
  163. var clonePattern = document.importNode(document.querySelector('#line').content,true);
  164. $('[data-class=pattern] a',clonePattern).text($(this).find('parts').children().map(function(i, element){return $(element).text()}).get().join("."));
  165. abk.forEach(function(item){
  166. if(typeof $("#FormPattern_Form_" + item).val() !== 'undefined' && typeof $("#FormPattern_Form_" + item).val() !== 'undefined'){
  167. $(xmlDocument).find("parts").append("<"+item+">" +$("#FormPattern_Form_" + item).find(":selected").text()+"</"+item+">")
  168. }
  169. });
  170. */
  171. //console.log($(this).prop("tagName"));
  172. //console.log($(this).text());
  173. $("#FormPattern_Form_" + $(this).prop("tagName")).val($(this).text());
  174. /*
  175. var pattern = $(this).attr('value').split(".")
  176. for(var i = 0; i < pattern.length; i++)
  177. {
  178. if(i == 0){
  179. $("#patternInput .patternPartInput").val(pattern[i]);
  180. $("#patternInput .patternPartInput").attr('size', pattern[i].length);
  181. }
  182. else{
  183. var clone = document.importNode(document.querySelector('#patternClone').content,true);
  184. $('[data-class=part]',clone).val(pattern[i]);
  185. $('[data-class=part]',clone).limitkeypress({ rexp: keypressRegex() });
  186. $('[data-class=part]',clone).attr('size', pattern[i].length);
  187. $("#patternInput").append(clone);
  188. }
  189. }
  190. $('#pattern').val($(this).attr('value'));
  191. */
  192. $('#pattern_description').val($(this).attr('description'));
  193. });
  194. }
  195. });
  196. }
  197. $('#pattern_details').css("display", "block");
  198. $('#pattern_station').text(stationID);
  199. $('#pattern_description').text("");
  200. //Reset Pattern
  201. $('#patternInput').text("");
  202. var clone = document.importNode(document.querySelector('#patternClone').content,true);
  203. $('[data-class=part]',clone).limitkeypress({rexp: keypressRegex()});
  204. $("#patternInput").append(clone);
  205. }
  206. function keypressRegex(){ //Helper Function
  207. return /^.{1,10}$/;
  208. //return /^[A-Za-z0-9\*]*$/; //Ohne Sonderzeichen
  209. }
  210. function removePatternPart(value) { //HTML
  211. if($( ".patternPart" ).length > 1)
  212. value.parent().remove();
  213. }
  214. function addPatternPart(useLast, curclass) { //HTML
  215. var clone = document.importNode(document.querySelector('#patternClone').content,true);
  216. $('[data-class=part]',clone).val("*");
  217. $('[data-class=part]',clone).limitkeypress({rexp: keypressRegex()});
  218. if(useLast){
  219. $("#" + curclass).children(".patternPart").last().after(clone);
  220. $("#" + curclass).last().children(".patternPartInput").focus();
  221. }else{
  222. $(':focus').parent().after(clone);
  223. $(':focus').parent().next().children(".patternPartInput").focus();
  224. }
  225. }
  226. function getPatternString(){ //Helper Function
  227. var val = "";
  228. var first = true;
  229. $(".patternPartInput").each(function() {
  230. if(first){
  231. first = false
  232. val += $(this).val()
  233. }
  234. else{
  235. val += "." + $(this).val()
  236. }
  237. });
  238. return val;
  239. }
  240. function savePattern(stationID) { //Save 2 DB
  241. var xmlDocument = $.parseXML("<pattern><parts></parts></pattern>");
  242. $(xmlDocument).find("pattern").attr('id','0');
  243. // #FormPattern
  244. abk.forEach(function(item){
  245. if(typeof $("#FormPattern_Form_" + item).val() !== 'undefined' && typeof $("#FormPattern_Form_" + item).val() !== 'undefined'){
  246. $(xmlDocument).find("parts").append("<"+item+">" +$("#FormPattern_Form_" + item).find(":selected").text()+"</"+item+">")
  247. }
  248. });
  249. $(xmlDocument).find("pattern").attr('description',$('#pattern_description').val());
  250. $(xmlDocument).find("pattern").attr('changed',new Date().toISOString());
  251. console.log((new XMLSerializer()).serializeToString(xmlDocument));
  252. $.ajax({
  253. type: "POST",
  254. headers: {"content-id": "pattern"},
  255. data: (new XMLSerializer()).serializeToString(xmlDocument),
  256. contentType: "application/xml; charset=utf-8",
  257. url: "../server/"+stationID,
  258. success: function(res) {
  259. //getPattern(stationID, res.id)
  260. },
  261. error: function (request, status, error) {
  262. //alert(request.responseText + status + error);
  263. }
  264. });
  265. }
  266. function saveChangedPattern(stationID, patternID) { //Save 2 DB
  267. var xmlDocument = $.parseXML("<pattern><parts></parts></pattern>");
  268. $(xmlDocument).find("pattern").attr('id',$('#pattern_ID').text());
  269. // #FormPattern
  270. abk.forEach(function(item){
  271. if(typeof $("#FormPattern_Form_" + item).val() !== 'undefined' && typeof $("#FormPattern_Form_" + item).val() !== 'undefined'){
  272. $(xmlDocument).find("parts").append("<"+item+">" +$("#FormPattern_Form_" + item).find(":selected").text()+"</"+item+">")
  273. }
  274. });
  275. $(xmlDocument).find("pattern").attr('description',$('#pattern_description').val());
  276. $(xmlDocument).find("pattern").attr('changed',new Date().toISOString());
  277. //Save Pattern
  278. $.ajax({
  279. type: "PUT",
  280. headers: {"content-id": "pattern"},
  281. data: (new XMLSerializer()).serializeToString(xmlDocument),
  282. contentType: "application/xml; charset=utf-8",
  283. url: "../server/"+stationID + "/" + patternID,
  284. //processData: false,
  285. success: function(res) {
  286. },
  287. error: function (request, status, error) {
  288. alert(request.responseText + status + error);
  289. }
  290. });
  291. //Update Labels
  292. $(".imageInput").each(function() {
  293. //Optimization only update if lable changed
  294. if($(this).val() != $(this).attr("origValue"))
  295. $.ajax({
  296. type: "PUT",
  297. data: { 'label' : $(this).val()},
  298. headers: {"content-id": "label"},
  299. url: "../server/"+stationID + "/" + patternID + "/images/" + $(this).parent().find(".imageID").text() +"/" + $('#image_language option:selected').text(),
  300. success: function(res) {
  301. },
  302. error: function (request, status, error) {
  303. alert(request.responseText + status + error);
  304. }
  305. });
  306. });
  307. //Update Image Ordering
  308. var order = []
  309. $(".imageID").each(function() {
  310. order.push(parseInt($(this).text()))
  311. });
  312. $.ajax({
  313. type: "PUT",
  314. data: JSON.stringify(order),
  315. headers: {"content-id": "orderlist"},
  316. contentType: "application/json",
  317. url: "../server/"+stationID + "/" + patternID + "/images/reorder/" + $('#image_language option:selected').text(),
  318. success: function(res) {
  319. },
  320. error: function (request, status, error) {
  321. alert(request.responseText + status + error);
  322. }
  323. });
  324. //Update Error
  325. var errorList = $.parseXML("<error/>");
  326. $(".errorInput").each(function() {
  327. $(errorList).find("error").append("<reason>" +$(this).val()+"</reason>")
  328. });
  329. $.ajax({
  330. type: "PUT",
  331. headers: {"content-id": "error"},
  332. data: (new XMLSerializer()).serializeToString(errorList),
  333. contentType: "application/xml; charset=utf-8",
  334. url: "../server/"+stationID + "/" + patternID + "/error",
  335. success: function(res) {
  336. },
  337. error: function (request, status, error) {
  338. alert(request.responseText + status + error);
  339. }
  340. });
  341. //Update Replacement
  342. var replaceList = $.parseXML("<replacement/>");
  343. $(".replaceInput").each(function() {
  344. //console.log($(this).find('.abbreviation').val())
  345. //console.log($(this).find('.url').val())
  346. $(replaceList).find("replacement").append("<item>" + "<abbreviation>" + $(this).find('.abbreviation').val() + "</abbreviation>" + "<url>" + $(this).find('.url').val() + "</url>"+"</item>")
  347. });
  348. $.ajax({
  349. type: "PUT",
  350. headers: {"content-id": "replacement"},
  351. data: (new XMLSerializer()).serializeToString(replaceList),
  352. contentType: "application/xml; charset=utf-8",
  353. url: "../server/"+stationID + "/" + patternID + "/replacement",
  354. success: function(res) {
  355. },
  356. error: function (request, status, error) {
  357. alert(request.responseText + status + error);
  358. }
  359. });
  360. getPattern(stationID, patternID)
  361. }
  362. function deletePattern(stationID, patternID) { //Delete From DB
  363. if (confirm('Are you really, really, REALLY sure!')) {
  364. $.ajax({
  365. type: "DELETE",
  366. url: "../server/" + stationID + "/" + patternID,
  367. success: function(res) {
  368. location.reload();
  369. }
  370. });
  371. }
  372. }
  373. function duplicatePattern(stationID, patternID){ //Get DB 2 HTML
  374. $.ajax({
  375. type: "PUT",
  376. headers: {"content-id": "patternID"},
  377. data: { "patternID":patternID},
  378. contentType: "application/json",
  379. url: "../server/"+stationID + "/" + patternID,
  380. success: function(res) {
  381. getPattern(stationID, res["id"])
  382. },
  383. error: function (request, status, error) {
  384. alert(request.responseText + status + error);
  385. }
  386. });
  387. }
  388. function getImages(stationID, patternID){ //Get From DB 2 HTML
  389. $('#images').css("display", "block");
  390. $('#imageListing').text("");
  391. $('#imgUpload').attr("action", "../server/" + stationID + "/" + patternID + "/images");
  392. $('#addExternalImageUrl').val("");
  393. $('#addExternalImage').attr("onclick", "addExternalImage(" + stationID + "," + patternID + ")");
  394. //Image preview needs pattern
  395. $.ajax({
  396. type: "GET",
  397. url: "../server/"+stationID+ "/" + patternID,
  398. dataType: "xml",
  399. success: function(xml) {
  400. pattern = xml.getElementsByTagName('pattern')[0].getAttribute("value");
  401. //get all images
  402. $.ajax({
  403. type: "GET",
  404. url: "../server/"+stationID+ "/" + patternID + "/images",
  405. dataType: "xml",
  406. success: function(xml) {
  407. var count = 0;
  408. $(xml).find('image').each(function(index){
  409. curID = $(this).attr('id')
  410. $(this).find('variant').each(function(){
  411. if($(this).attr('lang') == $('#image_language option:selected').text()){
  412. ++count;
  413. var clone = document.importNode(document.querySelector('#imagePreview').content,true);
  414. var imgsrcsingle = "../images/uploads/"+stationID+ "/" + patternID + "/" + curID + "/"+ $(this).attr('lang') + ".svg";
  415. var imgsrc = imgsrcsingle + "?" + Date.now();
  416. //$('[data-class=image]',clone).append('<img id="theImg" src="' + imgsrc +'" onclick="overlayOnImg(\'' +imgsrcsingle + '\')" height="100px" />')
  417. //$('[data-class=image]',clone).append('<object class="theImg" id="theImg" data="' + imgsrc +'" onclick="overlayOnImg(\'' +imgsrcsingle + '\')" height="100px" />')
  418. //managing that internal and external pictures look the same
  419. $('[data-class=image]',clone).load(imgsrc, function(){
  420. var width = $(this).children("svg").attr("width")
  421. var height = $(this).children("svg").attr("height")
  422. $(this).children("svg").attr("viewBox","0 0 " + pictureWidth + " " + pictureHeight + "");
  423. $(this).children("svg").attr("width","200");
  424. $(this).children("svg").attr("height","100");
  425. });
  426. $('[data-class=image]',clone).attr("onclick", "overlayOnImg('" + imgsrcsingle + "')" );
  427. //Image Preview
  428. $('[data-class=showimage]',clone).attr("href", "imageReplacement.php?___image___="+stationID+ "/" + patternID + "/" + curID + "/"+ $(this).attr('lang') + ".svg" +"&ProductCode=" + pattern + "&Station=" + "Station" + stationID);
  429. //$('[data-class=image]',clone).append('<object class="theImg" id="theImg" data="' + imgsrc +'" onclick="overlayOnImg(\'' +imgsrcsingle + '\')" height="100px" />')
  430. //$('[data-class=image]',clone).append('<div style="background-image: url(' + imgsrc+ ')" height="100px" />')
  431. $('[data-class=label]',clone).val($(this).attr('label'));
  432. $('[data-class=label]',clone).attr("origValue", $(this).attr('label'));
  433. $('[data-class=imageId]',clone).text(curID);
  434. $('[data-class=imageId]',clone).attr("class", "imageID")
  435. $('[data-class=options] a',clone).attr('href','javascript:deleteImage(' + stationID + ','+ patternID + ',' + curID + ',"' + $(this).attr('lang') + '");');
  436. $('#imageListing').append(clone);
  437. }
  438. });
  439. });
  440. $('#image_count').text(count);
  441. /*
  442. $(".image").each(function() {
  443. alert("mhm");
  444. $(this).children().attr("viewBox","0 0 " + "300" + " 300");
  445. });
  446. */
  447. }
  448. });
  449. }
  450. });
  451. new Sortable(document.getElementById('imageListing'),{
  452. handle: '.handle',
  453. animation: 150
  454. });
  455. new Sortable(document.getElementById('replaceImages'),{
  456. handle: '.handle2',
  457. animation: 150
  458. });
  459. }
  460. function addExternalImage(stationID, patternID){
  461. var extImage = $.parseXML("<externalImage/>");
  462. $(extImage).find("externalImage").append("<url>" + $('#addExternalImageUrl').val() +"</url>");
  463. $(extImage).find("externalImage").append("<lang>" + $('#image_language option:selected').text() + "</lang>");
  464. console.log(extImage);
  465. $.ajax({
  466. type: "POST",
  467. headers: {"content-id": "externalImage"},
  468. data: (new XMLSerializer()).serializeToString(extImage),
  469. contentType: "application/xml; charset=utf-8",
  470. url: "../server/" + stationID + "/" + patternID + "/images",
  471. success: function(res) {
  472. getPattern(stationID, patternID)
  473. }
  474. });
  475. }
  476. function deleteImage(stationID, patternID, imageID, lang) { //Delete From DB
  477. $.ajax({
  478. type: "DELETE",
  479. url: "../server/" + stationID + "/" + patternID + "/images/" + imageID + "/" + lang,
  480. success: function(res) {
  481. getPattern(stationID, patternID)
  482. }
  483. });
  484. }
  485. function addError() { //HTML
  486. //Will be added from DB on save
  487. var clone = document.importNode(document.querySelector('#errorCode').content,true);
  488. $('#errorCodes').append(clone);
  489. }
  490. function getError(stationID, patternID){ //Get From DB 2 HTML
  491. $('#error').css("display", "block");
  492. $('#errorCodes').text("");
  493. $.ajax({
  494. type: "GET",
  495. url: "../server/"+stationID+ "/" + patternID + "/error",
  496. dataType: "xml",
  497. success: function(xml) {
  498. $(xml).find('reason').each(function(index){
  499. var clone = document.importNode(document.querySelector('#errorCode').content,true);
  500. $('[data-class=errorInput]',clone).val($(this).text());
  501. $('#errorCodes').append(clone);
  502. });
  503. }
  504. });
  505. }
  506. function removeError(value) { //HTML
  507. //Will be removed from DB on save
  508. value.parent().parent().parent().remove();
  509. }
  510. function addBlankReplacement() { //HTML
  511. //Will be added from DB on save
  512. var clone = document.importNode(document.querySelector('#imageReplacements').content,true);
  513. $('#replaceImages').append(clone);
  514. }
  515. function getReplaceImages(stationID, patternID){ //Get From DB 2 HTML
  516. $('#replacements').css("display", "block");
  517. $('#replaceImages').text("");
  518. $.ajax({
  519. type: "GET",
  520. url: "../server/"+stationID+ "/" + patternID + "/replacement",
  521. dataType: "xml",
  522. success: function(xml) {
  523. $(xml).find('item').each(function(index){
  524. var clone = document.importNode(document.querySelector('#imageReplacements').content,true);
  525. $('[data-class=abbreviation]',clone).val($(this).find('abbreviation').text());
  526. $('[data-class=url]',clone).val($(this).find('url').text());
  527. $('#replaceImages').append(clone);
  528. });
  529. }
  530. });
  531. }
  532. function removeReplacement(value) { //HTML
  533. //Will be removed from DB on save
  534. value.parent().parent().parent().remove();
  535. }
  536. //Go to next PatternInput on . or space keydown
  537. $(window).keydown(function(e) {
  538. if ((e.which === 32 || e.which === 190) && $(':focus').attr('class') === "patternPartInput") {
  539. e.preventDefault();
  540. addPatternPart(false);
  541. }
  542. });
  543. $(document).ready(function() {
  544. getStations(); //Get all Stations
  545. $("#image_language" ).change(function() {
  546. getImages($('#pattern_station').text(), $('#pattern_ID').text())
  547. });
  548. $(document).on('submit', '#patternform', function() { //prevent page reload on form submit
  549. return false;
  550. });
  551. $('.patternPartInput').limitkeypress({rexp: keypressRegex()});
  552. });