どれかのリンクをクリックしてください
-----------------svg parameters-------------------------
style画面--------
---------共通-------- cancel
課題名
大分類
中分類
小分類
概要
更新日
------------------------------------------------
段落 typ_chng_flg=1: //基本配置 "; var selectedText = window.getSelection().toString(); console.log('Enter add P tag start_html_records=',start_html_records); var sel = window.getSelection(); if(!sel.rangeCount) return; var range = sel.getRangeAt(0); if(!check_structure_tag(doc_edit_node)) return; var par_tag= document.createElement('p'); //var parms="background-color:#edf7ff;"; par_tag.setAttribute('fig', '段落'); par_tag.innerHTML='新規の段落です。'; console.log('edit_node=',doc_edit_node); if(doc_add_first){ doc_edit_node.insertBefore(par_tag, doc_edit_node.firstChild) console.log('add First child'); } else { $(par_tag).insertAfter(doc_edit_node); console.log('not first'); } doc_add_first=false; cancel_green_line(); var f_name=font_import[0][0]; var parms='font-family:'+f_name+';'; console.log('add P tag style=',parms); par_tag.setAttribute('style', parms); if(font_import[0][2]==0) { font_import[0][2]=1; applyCustomCss_add(font_import[0][1]); } tag_trees=[]; tag_trees=get_tagStruct(par_tag,0); if(tag_trees.length>0) doc_deep_level=0; doc_edit_node=par_tag; doc_origin_node=par_tag; console.log('After add tag tree=',tag_trees,'levels=',tag_trees.length); setto_current_tag(doc_edit_node); // set_parms(); var result=check_html_hist(par_tag,tag_trees,level,'add'); display_current_tag(doc_edit_node); break; case 'svg_indiv': add_tag=" 段落 in DIV typ_chng_flg=1: //基本配置 "; console.log('Enter add Svg_indiv tag'); var node=doc_edit_node.nodeName; if(node!='DIV') { alert('svg must be made in DIV'); return; } var svgtags = doc_edit_node.querySelector('svg'); if(svgtags) { alert('svg tag already exis in DIV'); return; } var svg_div = document.createElementNS('http://www.w3.org/2000/svg','svg'); svg_div.setAttributeNS(null,'version', "1.1"); svg_div.setAttributeNS(null,'my_class', "indiv"); svg_div.setAttributeNS(null,'class', "canv2 point_auto select_auto"); svg_div.setAttributeNS(null,'width', "100%"); var fig_id='svg'+(Date.now()).toString(); svg_div.setAttribute('id', fig_id); svg_div.setAttributeNS(null,'height', "auto"); //svg_div.setAttributeNS(null,'viewBox', "0 0 400 200"); doc_edit_node.insertBefore(svg_div, doc_edit_node.firstChild); cancel_green_line(); setto_current_tag(doc_edit_node); set_parms(); //Svg_indivを作成時一度はSvg_indivに入る必要がある。 document.getElementById("makeSvg_indiv").click(); break; case 'table': add_tag=" 作表 typ_chng_flg=4 //並び・装飾 "; console.log('select=',add_tag); if(!check_structure_tag(doc_edit_node)) return; var par_tag= document.createElement('div'); par_tag.setAttribute('class', 'table'); par_tag.setAttribute('fig', 'table'); var tabl_id='ta'+(Date.now()).toString(); par_tag.setAttribute('id', tabl_id); var hm_numb=Number(document.getElementById('hm_numb').value); var cols=document.getElementById('tabl_cols').value; var head_yes=document.getElementById('ta_head').value; if(hm_numb<2) hm_numb=2; if(hm_numb>10) hm_numb=10; var tabl_tag=document.createElement('table'); par_tag.appendChild(tabl_tag); if(head_yes) { var thead_tag=document.createElement('thead'); tabl_tag.append(thead_tag); var tr_tag=document.createElement('tr'); for(let i=0;iタグを除く function normalizeFonts(root) { // → style に変換 root.querySelectorAll("font[color]").forEach(font => { const color = font.getAttribute("color"); const span = document.createElement("span"); span.style.color = color; // 中身を移動 while (font.firstChild) { span.appendChild(font.firstChild); } font.replaceWith(span); }); // や はキャンセル(中身だけ残す) root.querySelectorAll("font[face], font[size]").forEach(font => { font.replaceWith(...font.childNodes); }); } */ var old_trees=tag_trees; var old_level=level; cancel_green_line(); tag_trees=[]; tag_trees=get_tagStruct(span,0); if(tag_trees.length>0) doc_deep_level=0; doc_edit_node=span; doc_origin_node=span; console.log('After add tag tree=',tag_trees,'levels=',tag_trees.length); setto_current_tag(doc_edit_node); set_parms(); var span_par=doc_edit_node.parentNode; console.log('span tag=',span,span_par); // var result=check_html_hist(span_par,old_trees,old_level,'add_d'); display_current_tag(doc_edit_node); window.getSelection().removeAllRanges(); break; case 'button': add_tag=" ボタン typ_chng_flg=4: //画像・リンク "; var selectedText = window.getSelection().toString(); console.log('Enter button'); var sel = window.getSelection(); if(!sel.rangeCount) return; var range = sel.getRangeAt(0); //OK!! でも下記のでもOK //タグを作成 var newNode =document.createElement('a'); newNode.setAttribute('fig', 'ボタン'); if(selectedText.length>0){ range.deleteContents(); // 範囲選択箇所を一旦削除 range.insertNode(newNode); document.getElementById('im_pam5').value=selectedText; } else { if(document.getElementById('im_pam5').value) { newNode.innerHTML=document.getElementById('im_pam5').value; } else newNode.innerHTML='google'; range.insertNode(newNode); } if(document.getElementById('link_targ').value) { newNode.href=document.getElementById('link_targ').value; } newNode.setAttribute('target', '_blank'); var parms=''; if(document.getElementById('hm_parm1').value) { parms=parms+'color:'+document.getElementById('hm_parm1').value+';'; } // if(document.getElementById('hm_parm2').value) { // parms=parms+'background-color:'+document.getElementById('hm_parm2').value+';'; // } if(document.getElementById('hm_parm14').value) { parms=parms+'font-weight:'+document.getElementById('hm_parm14').value+';'; } newNode.setAttribute('style', parms); /* if(document.getElementById('tit_title').value) { par_tag.innerHTML=document.getElementById('tit_title').value; } */ var new_par=newNode.parentNode; cancel_green_line(); tag_trees=[]; tag_trees=get_tagStruct(newNode,0); if(tag_trees.length>0) doc_deep_level=0; doc_edit_node=newNode; doc_origin_node=newNode; console.log('After add tag tree=',tag_trees,'levels=',tag_trees.length); setto_current_tag(doc_edit_node); set_parms(); // var result=check_html_hist(new_par,tag_trees,level,'add_d'); display_current_tag(doc_edit_node); break; case 'link': add_tag=" link typ_chng_flg=4: //画像・リンク "; var selectedText = window.getSelection().toString(); console.log('Enter link'); var sel = window.getSelection(); if(!sel.rangeCount) return; var range = sel.getRangeAt(0); //OK!! でも下記のでもOK console.log('catch link text=',range); //タグを作成 var newNode =document.createElement('a'); newNode.setAttribute('fig', 'リンク'); if(selectedText.length>0){ range.deleteContents(); // 範囲選択箇所を一旦削除 range.insertNode(newNode); document.getElementById('im_pam5').value=selectedText; newNode.innerHTML=selectedText; } else { if(document.getElementById('im_pam5').value) { newNode.innerHTML=document.getElementById('im_pam5').value; } else newNode.innerHTML='google'; range.insertNode(newNode); // $(newNode).insertBefore(doc_edit_node); } if(document.getElementById('link_targ').value) { newNode.href=document.getElementById('link_targ').value; } var new_par=newNode.parentNode; newNode.setAttribute('target', '_blank'); cancel_green_line(); tag_trees=[]; tag_trees=get_tagStruct(newNode,0); if(tag_trees.length>0) doc_deep_level=0; doc_edit_node=newNode; doc_origin_node=newNode; console.log('After add tag tree=',tag_trees,'levels=',tag_trees.length); setto_current_tag(doc_edit_node); set_parms(); // var result=check_html_hist(new_par,tag_trees,level,'add_d'); display_current_tag(doc_edit_node); break; case 'nav_menu': add_tag="menu + typ_chng_flg=1://基本配置 "; console.log('select=',add_tag); if(!check_structure_tag(doc_edit_node)) return; // var oya_tag= document.createElement('nav'); oya_tag.setAttribute('fig', 'メニュー'); oya_tag.setAttribute('class', 'my_navi') // var par_tag= document.createElement('ul'); par_tag.setAttribute('id', 'my_resp_menu'); par_tag.setAttribute('style','color:white;font-weight:bold;list-style-type:none;'); var hm_numb=Number(document.getElementById('hm_numb').value); if(hm_numb<2) hm_numb=2; if(hm_numb>10) hm_numb=10; //Home for(let i=0;iのfirstChildとして次にhumburgerを追加 // var chd_tag = document.createElement('li'); chd_tag.setAttribute('id', 'my_nav_togl'); chd_tag.setAttribute('class', 'my_hamburger'); chd_tag.innerHTML=''; par_tag.insertBefore(chd_tag, par_tag.firstChild) if(doc_add_first){ doc_edit_node.insertBefore(oya_tag, doc_edit_node.firstChild) console.log('add First child'); } else { $(oya_tag).insertAfter(doc_edit_node); console.log('not first'); } doc_add_first=false; oya_tag.appendChild(par_tag); cancel_green_line(); tag_trees=[]; tag_trees=get_tagStruct(oya_tag,0); if(tag_trees.length>0) doc_deep_level=0; doc_edit_node=oya_tag; doc_origin_node=oya_tag; setto_current_tag(doc_edit_node); set_parms(); var result=check_html_hist(oya_tag,tag_trees,level,'add'); display_current_tag(doc_edit_node); break; case 'I_con': add_tag=" Icon typ_chng_flg=4: //画像・リンク "; //const selectedText = window.getSelection().toString(); console.log('Enter Icon'); var sel = window.getSelection(); if(!sel.rangeCount) return; var range = sel.getRangeAt(0); //OK!! でも下記のでもOK //タグを作成 var newNode =document.createElement('i'); newNode.setAttribute('fig', 'Icon'); range.insertNode(newNode); if(document.getElementById('link_targ').value) { var font_code=document.getElementById('link_targ').value; } newNode.setAttribute('class', font_code); var new_par=new_Node.parentNodel cancel_green_line(); tag_trees=[]; tag_trees=get_tagStruct(newNode,0); if(tag_trees.length>0) doc_deep_level=0; doc_edit_node=newNode; doc_origin_node=newNode; console.log('After add tag tree=',tag_trees,'levels=',tag_trees.length); setto_current_tag(doc_edit_node); set_parms(); // var result=check_html_hist(new_par,tag_trees,level,'add_d'); display_current_tag(doc_edit_node); break; case 'recipe': add_tag=" recipe typ_chng_flg=4: //画像・リンク "; console.log('Enter recipe'); var sl = document.getElementById( "style_recipe_tag" ) ; while(sl.lastChild) { sl.removeChild(sl.lastChild); } var newElement = new Option("","none") ; // newtagを追加する sl.add( newElement ); if(recipe_selection) { console.log('recipe selection=',recipe_selection-1,myrecipe_list); var rec_num=myrecipe_list[recipe_selection-1][0]; var recipe_text=get_myrecipe(rec_num); const domParser = new DOMParser(); var parsed = domParser.parseFromString(my_recipe_data, 'text/html'); //const new_node = parsed.querySelectorAll('html body > *'); const new_node = parsed.body; console.log('new_node leng=',new_node.childNodes.length,new_node); //$(new_node).insertAfter(doc_edit_node); var par_tag= document.createElement('div'); var temp_tag; for(let i=0;i $(document).on('click', '#regi_icon', function(){ icon_regist='regist'; document.getElementById("draw_mesh").click(); }); $(document).on('change', '#icon_area', function(){ mesh_draw=0; icon_regist=''; document.getElementById("draw_mesh").click(); }); $(document).on('click', '#draw_mesh', function(){ console.log("***Enter draw_mesh"); var mesh_container = document.getElementById('mesh_canv'); if(!icon_regist) { mesh_draw=0; icon_regist=''; } if(!mesh_draw){ switch (icon_area.selectedIndex){ case 0: box_size=16; expan=8; break; case 1: box_size=32; expan=8; break; case 2: box_size=48; expan=4; break; case 3: box_size=64; expan=4; break; case 4: box_size=256; expan=1; break; case 5: box_size=400; expan=1; break; case 6: box_size=600; expan=1; break; case 7: box_size=800; expan=1; break; } console.log('icon_size selected=',icon_area.selectedIndex,'box_size=',box_size); // div要素を生成 var show_area=document.getElementById('icon_show_area'); if(!show_area) { var div = document.createElement('div'); div.setAttribute('id','icon_show_area'); // classを追加 div.className = 'show_icon'; var p_area = document.createElement('p'); p_area.textContent = "icon_show area"; div.appendChild(p_area); // 生成したdiv要素を追加する document.getElementById('tab1').appendChild(div); var div_b = document.createElement('div'); div_b.setAttribute('id', 'use_icon'); div.appendChild(div_b); } } if(icon_regist=='regist') { var result = window.prompt("symbol name:", "name"); if(result!=null){ console.log('result=',result); var symbol = document.createElementNS('http://www.w3.org/2000/svg', 'symbol'); var fig_id=result; symbol.setAttribute('id', fig_id); var zero=0; symbol.setAttribute('viewBox', `${zero} ${zero} ${box_size} ${box_size}`); symbol.setAttribute('preserveAspectRatio', "none"); mesh_container.appendChild(symbol); target = container; console.log("target=",target); var g_temp = document.createElementNS('http://www.w3.org/2000/svg', 'g'); var fig_id2='g'+(Date.now()).toString(); g_temp.setAttribute('id', fig_id2); g_temp.setAttribute('fig', 'group'); // container.appendChild(g_temp); console.log('g_temp=',g_temp); //Iconの場合はtargetはsvg00のcontainerそのもので含まれるタグをすべてIconに入れる var shift=20; var divs=expan; simple_fig_top(g_temp,target,target,shift,divs); //transform matrixを適用して図形simple化 console.log('g_temp,target=',g_temp,target); /* 元々のIcon用描画は削除しない。 while (target.lastElementChild) { target.removeChild(target.lastElementChild); } while (g_temp.lastElementChild) { target.append(g_temp.lastElementChild.cloneNode(true)); g_temp.removeChild(g_temp.lastElementChild); } */ console.log('g_temp2,target2=',g_temp,target); //本システムはタグ下のpath要素が基本なのでこのレベルから連結化及びSimple化を実施する var back=$("#icon_back").val(); var wdt=$("#icon_width").val(); var frm=$("#icon_frame").val(); for (k = 0; k < g_temp.childElementCount; k++) { // symbol.append(target.children[k].cloneNode(true)); symbol.appendChild(g_temp.children[k].cloneNode(true)); console.log('symbol=',symbol); } var svg_a = document.createElementNS('http://www.w3.org/2000/svg','svg'); svg_a.setAttributeNS(null,'viewBox', "0 0 200 100"); var use_a=document.createElementNS('http://www.w3.org/2000/svg','use'); use_a.setAttributeNS(null,'width', '25'); use_a.setAttributeNS(null,'height', '25'); use_a.setAttributeNS(null,'href', '#'+fig_id); console.log('use_a=',use_a); svg_a.appendChild(use_a); var recta=createRectFig(0,0,25,25); if(Number(wdt)>0 && (frm!="none" || frm!='')) { recta.setAttribute('stroke', frm); recta.setAttribute('stroke-width',wdt); } // if(back!="none" || back!='') recta.setAttribute('fill',back) svg_a.appendChild(recta); var use_b=document.createElementNS('http://www.w3.org/2000/svg','use'); use_b.setAttributeNS(null,'x', '30'); use_b.setAttributeNS(null,'y', '0'); use_b.setAttributeNS(null,'width', '50'); use_b.setAttributeNS(null,'height', '50'); use_b.setAttributeNS(null,'href', '#'+fig_id); console.log('use_a=',use_b); svg_a.appendChild(use_b); var rectb=createRectFig(30,0,50,50); if(Number(wdt)>0 && (frm!="none" || frm!='')) { rectb.setAttribute('stroke', frm); rectb.setAttribute('stroke-width',wdt); } // if(back!="none" || back!='') rectb.setAttribute('fill',back) svg_a.appendChild(rectb); var use_c=document.createElementNS('http://www.w3.org/2000/svg','use'); use_c.setAttributeNS(null,'x', '100'); use_c.setAttributeNS(null,'y', '0'); use_c.setAttributeNS(null,'width', '100'); use_c.setAttributeNS(null,'height', '100'); use_c.setAttributeNS(null,'href', '#'+fig_id); console.log('use_a=',use_c); svg_a.appendChild(use_c); var rectc=createRectFig(100,0,100,100); if(Number(wdt)>0 && (frm!="none" || frm!='')) { rectc.setAttribute('stroke', frm); rectc.setAttribute('stroke-width',wdt); } // if(back!="none" || back!='') rectc.setAttribute('fill',back) svg_a.appendChild(rectc); document.getElementById('use_icon').appendChild(svg_a); //tab1に生成したid=”use_icon”に生成したiconを書き出す } } else { //最初のmeshボタンが押された場合のみmesh線を引く var group = document.getElementById('mesh01'); if(group) group.remove(); group = document.createElementNS('http://www.w3.org/2000/svg', 'g'); var fig_id='mesh01'; group.setAttribute('id', 'mesh01'); mesh_container.appendChild(group); console.log('***fig id= ',fig_id); //draw x_line x_last=box_size*expan+x_mesh_offset; y_last=box_size*expan+y_mesh_offset; var imod=4; g_span=expan; if(box_size>=64) { imod=4; g_span=16; } if(box_size>=400) { imod=10; g_span=10; } var x0=x_mesh_offset,x1=x_last; var y0=y_mesh_offset; for ( var i = 0 ; y0+g_span*i <= y_last ; i++ ){ var y=y0+g_span*i; var drawPoint=[]; drawPoint.push({x: x0,y: y}); drawPoint.push({x: x1,y: y}); bezier_line=createPath(drawPoint,0); mod_i=i % imod; if(mod_i==0) { Object.assign(bezier_line.style, tempoPathStyle); } else { Object.assign(bezier_line.style, tempoPathStyle2); } group.appendChild(bezier_line); } //draw y_line var y0=y_mesh_offset,y1=y_last; var x0=x_mesh_offset; for ( var i = 0 ; x0+g_span*i <= x_last ; i++ ){ var x=x0+g_span*i; var drawPoint=[]; drawPoint.push({x: x,y: y0}); drawPoint.push({x: x,y: y1}); bezier_line=createPath(drawPoint,0); mod_i=i % imod; if(mod_i==0) { Object.assign(bezier_line.style, tempoPathStyle); } else { Object.assign(bezier_line.style, tempoPathStyle2); } group.appendChild(bezier_line); } mesh_draw=true; mesh_integer=true; } }); next_icon.onclick = function(){ //svg_00領域をclearする while (container.lastElementChild) { console.log('**lastChild nodename= ',container.lastElementChild.nodeName); if(container.lastElementChild.nodeName!='defs'){ container.removeChild(container.lastElementChild); } } icon_regist=''; // disp_yn_check(); document.getElementById("icon_area").click(); } cancel_icon.onclick = function(){ //cancelの場合 symbol(id)と最後のuse_iconを削除する var canv=document.getElementById('mesh_canv'); var last_symb=canv.querySelectorAll('symbol'); last_symb[last_symb.length-1].remove(); var icons=document.getElementById('use_icon'); console.log('delete last_one icons=',icons); icons.lastElementChild.remove(); icon_regist=''; // disp_yn_check(); document.getElementById("icon_area").click(); } export_symbols.onclick = function(){ //function export_symbols() { console.log("***Enter export"); var canv=document.getElementById("mesh_canv"); console.log('canv=',canv); // icons=canv.queryselectorAll('symbol'); var tag_icons=canv.getElementsByTagName('symbol'); console.log('symbols=',tag_icons); var use_tag=document.getElementById("use_icon"); console.log('use_icon=',use_tag); svg_tag=''+'\n'; console.log('outerHTML=',svg_tag); console.log('**icons length=',tag_icons.length); for (nn = 0; nn < tag_icons.length; nn++) { console.log('icon id=',tag_icons[nn].id,document.getElementById(tag_icons[nn].id)); var tagn=document.getElementById(tag_icons[nn].id).cloneNode(true); svg_tag=svg_tag+tagn.outerHTML+'\n'; } svg_tag=svg_tag+use_tag.outerHTML; svg_tag=svg_tag+''; console.log('***svg_tag length = ', svg_tag.length); console.log('svg_tag=',svg_tag); //for デモバージョン if(((for_cloud=='yes') || (for_demo=='yes')) && (svg_tag.length > 10000)) { alert('Download symbols is too large this Demo version!'); return; } let blob = new Blob([svg_tag],{type:"svg"}); let link = document.createElement('a'); link.href = URL.createObjectURL(blob); link.download = 'symbol_files.svg'; link.click(); if(icon_gen_dialog) $('#icon_generate').dialog("close"); icon_gen_dialog=0; } export_icon.onclick = function(){ //function export_icon() { console.log("***Enter export_icon"); var box='viewBox='+'"'+'0 0 '+`${box_size}`+' '+`${box_size}`+'"'; var view_size="width="+'"'+`${box_size}`+'"'+" height="+'"'+`${box_size}`+'" '+box+' '; console.log('view=',view_size); var canv=document.getElementById("mesh_canv"); var tag_icons=canv.getElementsByTagName('symbol'); console.log('symbols=',tag_icons); var paths=tag_icons[tag_icons.length-1].getElementsByTagName('path'); var waku=document.createElementNS('http://www.w3.org/2000/svg','rect'); waku.setAttribute('x',0); waku.setAttribute('y',0); waku.setAttribute('width',box_size); waku.setAttribute('height',box_size); var back=$("#icon_back").val(); // waku.setAttribute('fill',back) var wdt=$("#icon_width").val(); var frm=$("#icon_frame").val(); if(Number(wdt)>0 && frm!="none") { waku.setAttribute('stroke', frm); waku.setAttribute('stroke-width',wdt); } console.log('waku=',waku); svg_tag=''+'\n'; // svg_tag=svg_tag+waku.outerHTML+'\n'; console.log('outerHTML=',svg_tag); console.log('**icons paths=',paths.length); for (nn = 0; nn < paths.length; nn++) { //console.log('icon paths=',paths[nn]); var tagn=paths[nn].cloneNode(true); console.log('style width=',tagn.style.strokeWidth); var width=tagn.style.strokeWidth; if(width && Number(width)<5) tagn.style.strokeWidth="5"; svg_tag=svg_tag+tagn.outerHTML+'\n'; } svg_tag=svg_tag+''; console.log('***svg_tag length = ', svg_tag.length); console.log('svg_tag=',svg_tag); //for デモバージョン if(((for_cloud=='yes') || (for_demo=='yes')) && (svg_tag.length > 10000)) { alert('Download svg is too large this Demo version!'); return; } let blob = new Blob([svg_tag],{type:"svg"}); let link = document.createElement('a'); link.href = URL.createObjectURL(blob); link.download = 'icon_file.svg'; link.click(); // if(icon_gen_dialog) $('#icon_generate').dialog("close"); // icon_gen_dialog=0; } add_more.onclick = function(){ console.log('***sub animation'); var theDialog=$( '#more_anime' ) . dialog( { autoOpen: false, draggable: true, resizable: true, height:260, width: 420, position: {my: "right bottom", at: "right top", of: window}} ); //ダイアログを表示する subanimation_dialog=1; add_more_type(); // set_gradpallet(); theDialog.dialog("open"); } $('#more_anime').on('dialogclose', function(event) { console.log('subAnimation Dialog closed'); subanimation_dialog=0; }); function set_gradpallet() { //console.log('set gradpallet ',sel,pal); var pal_tag=document.getElementById('grad_pallet'); var cx=10; var cy=100; var w=40; var h=20; for(let k=0; k<5;k++){ let rect=createRectFig(cx,cy,w,h); rect.setAttribute('stroke', 'blue'); rect.setAttribute('stroke-width', '1'); cx=cx+50; //c.setAttributeNS(null,'id',sel[k][1]); //if(sel[k][4]=="none") c.setAttributeNS(null,'fill','#ffffff'); //else c.setAttributeNS(null,'fill',sel[k][4]); //rect.setAttribute('stroke', 'green'); //rect.setAttribute('stroke-width', '1'); pal_tag.append(rect); //console.log('grad pallet draw'); } } function add_more_type() { //元dialogでのamine_tagを設定していない場合 last_anime_node==""の場合 former_anime_tag=""; if(Drag_elem) last_anime_node=Drag_elem; var rect=last_anime_node.getBoundingClientRect(); console.log('rect=',rect); // getrect_shape(rect_node); //console.log('shape center=',drag.center_x,drag.center_y) var center_x=Math.round(Number((rect.left+rect.width/2)*10)/10); var center_y=Math.round(Number((rect.top+rect.height/2)*10)/10); console.log('center=',center_x,center_y); console.log('anime_type selected num=',anime_tp.selectedIndex); switch (more_tp.selectedIndex){ case 0: more_anime_type=0; document.getElementById('more_key_time').value="0;0.5;1"; var parm1=String(-100)+',0'; var parm2=String(100)+',0'; document.getElementById('more_key_value').value=parm1+';'+parm2+';'+parm1; break; case 1: more_anime_type=1; document.getElementById('more_key_time').value="0;1"; var parm=String(center_x)+','+String(center_y); document.getElementById('more_key_value').value='0 '+parm+';'+'360 '+parm; break; case 2: more_anime_type=2; color_val=''; document.getElementById('more_key_time').value=""; document.getElementById('more_key_value').value=""; break; } } more_animation.onclick = function(){ console.log('Enter set_more_animation last_anime=',last_anime_node); //最初にgタグ下のtextタグを取り出して、その下にあるタグを取り出して置く var anim_durtime=$("#time_more").val(); var anim_start=$("#time_morebegin").val(); var more_time=$(more_key_time).val(); console.log('anime dur_time,start_time=',anim_durtime,anim_start); if(anim_durtime<=0.1) { alert('set animate time not right'); return; } if(anim_durtime>0) { /* var my_anime=last_anime_node.getAttribute('fig','anime_top'); if(!my_anime){ my_anime = document.createElementNS('http://www.w3.org/2000/svg', 'g'); my_anime.setAttribute('fig','anime_top'); fig_id='g'+(Date.now()).toString(); my_anime.setAttribute('id', fig_id); console.log('anime_top fig_id=',fig_id); container.appendChild(my_anime); console.log('added to container=',container); } */ } if(Drag_elem) last_anime_node=Drag_elem; if(more_anime_type==0 || more_anime_type==1) { var anime_node = document.createElementNS('http://www.w3.org/2000/svg', 'animateTransform'); } else { var anime_node = document.createElementNS('http://www.w3.org/2000/svg', 'animate'); } var anime_group= document.createElementNS('http://www.w3.org/2000/svg', 'g'); anime_group.setAttribute('fig', "anime"); fig_id='g'+(Date.now()).toString(); anime_group.setAttribute('id', fig_id); console.log('new fig_id=',fig_id); var value=document.getElementById('more_key_value').value; console.log('color_val,value=',value,color_val); anime_node.setAttribute('attributeType', "XML"); anime_node.setAttribute('repeatCount', "indefinite"); // anime_node.setAttribute('calcMode', "linear"); anime_node.setAttribute('dur', String(anim_durtime)); // anime_node.setAttribute('begin', String(anim_start)); console.log('more type=',more_anime_type); if(more_anime_type==0 || more_anime_type==1) { anime_node.setAttribute('attributeName', "transform"); if(more_anime_type==0) anime_node.setAttribute('type', "translate"); else anime_node.setAttribute('type', "rotate"); anime_node.setAttribute('values',value); anime_node.setAttribute('keyTimes',more_time); if(last_anime_node) { var node_id=last_anime_node.getAttribute('id'); var node=document.getElementById(node_id); console.log('move node=',node); anime_group.appendChild(node); } anime_group.appendChild(anime_node); } if(more_anime_type==2) { anime_node.setAttribute('attributeName', "fill"); console.log('222color_val,value=',value,color_val); anime_node.setAttribute('values',value); var pnode=last_anime_node.querySelector('path'); console.log('path_node=',pnode); pnode.appendChild(anime_node); anime_group.appendChild(last_anime_node); } container.appendChild(anime_group); last_anime_node=anime_group; console.log('set last_anime_node=',last_anime_node); } var color_val=''; c_add_palt01.onclick = function(){ color_val=color_val+'#E60012;'; document.getElementById('more_key_value').value=color_val; } c_add_palt02.onclick = function(){ color_val=color_val+'#F39800;'; document.getElementById('more_key_value').value=color_val; } c_add_palt03.onclick = function(){ color_val=color_val+'#FFF100;'; document.getElementById('more_key_value').value=color_val; } c_add_palt04.onclick = function(){ color_val=color_val+'#8FC31F;'; document.getElementById('more_key_value').value=color_val; } c_add_palt05.onclick = function(){ color_val=color_val+'#009944;'; document.getElementById('more_key_value').value=color_val; } c_add_palt06.onclick = function(){ color_val=color_val+'#009E96;'; document.getElementById('more_key_value').value=color_val; } c_add_palt07.onclick = function(){ color_val=color_val+'#00A0E9;'; document.getElementById('more_key_value').value=color_val; } c_add_palt08.onclick = function(){ color_val=color_val+'#0068B7;'; document.getElementById('more_key_value').value=color_val; } c_add_palt09.onclick = function(){ color_val=color_val+'#1D2088;'; document.getElementById('more_key_value').value=color_val; } c_add_palt10.onclick = function(){ color_val=color_val+'#920783;'; document.getElementById('more_key_value').value=color_val; } c_add_palt11.onclick = function(){ color_val=color_val+'#E4007F;'; document.getElementById('more_key_value').value=color_val; } c_add_palt12.onclick = function(){ color_val=color_val+'#E5004F;'; document.getElementById('more_key_value').value=color_val; } p_disp_on.onclick= function(){ // function p_disp_onoff(v_path){ console.log('**display on/off called'); var disp_path_id=document.getElementById('animPath').value; var disp_path=document.getElementById(disp_path_id); console.log('disp_path=',disp_path); // v_path = (typeof v_path !== 'undefined') ? v_path : Drag_elem; // var disp_path=v_path; var styl=disp_path.getAttribute('style'); //style指定必要な場合 var sty_char=[]; if(styl!=null) sty_char=styl.split(';'); console.log(sty_char) styl=""; var path_disp_on_off=1; if(sty_char.length>0) { let splt=sty_char[0].split(':'); if(splt[1]=='none') path_disp_on_off=0; } console.log('style=',sty_char,'disp_on=',path_disp_on_off); if(path_disp_on_off) { styl=styl+'display:none;'; path_disp_on_off=0; document.getElementById('p_disp_on').value="disp_on"; } else { styl=styl+'display:block;'; path_disp_on_off=1; document.getElementById('p_disp_on').value="disp_off"; } disp_path.setAttribute('style', styl); } start_anime.onclick = function(){ console.log('start_animeが押されました'); fgedit.selectedIndex=3; chng_mode(); fgedit.selectedIndex=2; chng_mode(); } function select_anime_tag() { console.log('Check tags Tags No.=',select_mend_node,svg_mend_tags); var mend_tag=svg_mend_tags[select_mend_node]; console.log('mend_tag=',mend_tag); var node_type=check_animetype(mend_tag); console.log('anime_type=',node_type); document.getElementById('anim_tag_num').value=String(select_mend_node+1); switch (node_type){ case "path_along_g": document.getElementById('mend_time_figanime').value=mend_tag.getAttribute('dur'); document.getElementById('mend_time_figbegin').value=mend_tag.getAttribute('begin'); document.getElementById('mend_key_time').value=mend_tag.getAttribute('keyTimes'); document.getElementById('mend_key_value').value=mend_tag.getAttribute('keyPoints'); var parent=mend_tag.parentNode; var svg_node=(parent.getAttribute('xlink:href')).slice(1); svg_edit_node=document.getElementById(svg_node); var rect_a=svg_edit_node.getBoundingClientRect(); var w=rect_a.right-rect_a.left; var h=rect_a.bottom-rect_a.top; var pnt2=svgPoint(svg_edit_node, rect_a.left, rect_a.top); rect01=createRectFig(pnt2.x,pnt2.y,w,h); // rect01.setAttribute('id', 'rect01'); rect01.setAttribute('fig', 'temp'); svg_edit_node.appendChild(rect01); former_parent=svg_edit_node; break; case "path_along_tx": case "one-stroke": case "draw_hide": case "path_deform": case "translate": case "rotate": case "gradation": document.getElementById('mend_time_figanime').value=mend_tag.getAttribute('dur'); document.getElementById('mend_time_figbegin').value=mend_tag.getAttribute('begin'); document.getElementById('mend_key_time').value=mend_tag.getAttribute('keyTimes'); document.getElementById('mend_key_value').value=mend_tag.getAttribute('values'); var parent=mend_tag.parentNode; var rect_a=parent.parentNode.getBoundingClientRect(); var w=rect_a.right-rect_a.left; var h=rect_a.bottom-rect_a.top; var pnt2=svgPoint(parent.parentNode, rect_a.left, rect_a.top); var rect01=createRectFig(pnt2.x,pnt2.y,w,h); // rect01.setAttribute('id', 'rect01'); rect01.setAttribute('fig', 'temp'); //Drag_elem.appendChild(rect01); //former_parent=Drag_elem; former_parent=parent; break; } } function former_animetype() { var mend_tag=Drag_elem.querySelector('animate,animateMotion,animateTransform'); var parent=mend_tag.parentNode; var attr=mend_tag.getAttribute('attributeName'); if(parent.nodeName=='use') { //animateMotion and along the pass var tagn=parent.querySelector('mpath'); var svg_node=(tagn.getAttribute('xlink:href')).slice(1); return type; } if(parent.nodeName=='textPath') { //animate and along the pass var svg_node=(parent.getAttribute('href')).slice(1); return type; } } function check_animetype(mend_tag) { var type=""; var parent=mend_tag.parentNode; var attr=mend_tag.getAttribute('attributeName'); if(parent.nodeName=='use') { //animateMotion and along the pass document.getElementById('mend_anime_type').value="go along the path"; type="path_along_g"; return type; } if(parent.nodeName=='textPath') { //animate and along the pass document.getElementById('mend_anime_type').value="go along the path"; type="path_along_tx"; return type; } if(mend_tag.nodeName=='animate' && attr=="d") { //animate attributeName="d" deform document.getElementById('mend_anime_type').value="path deformation"; type="path_deform"; return type; } if(mend_tag.nodeName=='animate' && attr=="fill") { //animate gradation document.getElementById('mend_anime_type').value="gradation"; type="gradation"; return type; } if(mend_tag.nodeName=='animate' && attr=="stroke-dashoffset") { var mask_tag=parent.querySelector('mask'); if(mask_tag) { //draw and hide document.getElementById('mend_anime_type').value="draw and hide"; type="draw_hide"; return type; } else { //animate maskを含まないone-stroke-write document.getElementById('mend_anime_type').value="one-stroke writing"; type="one-stroke"; return type; } } if(mend_tag.nodeName=="animateTransform") { //animateTansform transform var attr_type=mend_tag.getAttribute('type'); if(mend_tag.nodeName=='animate' && attr_type=="rotate") { //animateTansform transform and rotate document.getElementById('mend_anime_type').value="rotate"; type="rotate"; return type; } else { //animate maskを含まないone-stroke-write document.getElementById('mend_anime_type').value="translate"; type="translate"; return type; } } return type; } modify_parms.onclick=function() { console.log('Enter to modify parms mend tags No.=',select_mend_node,svg_mend_tags); var mend_tag=svg_mend_tags[select_mend_node]; console.log('mend_tag and Drag_elem=',mend_tag,Drag_elem); var node_type=check_animetype(mend_tag); console.log('anime_type=',node_type); document.getElementById('anim_tag_num').value=String(select_mend_node+1); switch (node_type){ case "path_along_g": mend_tag.setAttribute('dur',document.getElementById('mend_time_figanime').value); var begin=document.getElementById('mend_time_figbegin').value; if(begin) mend_tag.setAttribute('begin',begin); else mend_tag.removeAttribute('begin'); mend_tag.setAttribute('keyTimes',document.getElementById('mend_key_time').value); var value=document.getElementById('mend_key_value').value; if(value) mend_tag.setAttribute('keyPoints',value); else mend_tag.removeAttribute('keyPoints'); break; case "path_deform": mend_tag.setAttribute('dur',document.getElementById('mend_time_figanime').value); var begin=document.getElementById('time_figbegin').value; if(begin) mend_tag.setAttribute('begin',begin); else mend_tag.removeAttribute('begin'); break; case "path_along_tx": case "one-stroke": case "draw_hide": case "translate": case "rotate": case "gradation": var dura=document.getElementById('mend_time_figanime').value; if(dura) mend_tag.setAttribute('dur',dura); var begin=document.getElementById('mend_time_figbegin').value; if(begin) mend_tag.setAttribute('begin',begin); else mend_tag.removeAttribute('begin'); var times=document.getElementById('mend_key_time').value; if(times) mend_tag.setAttribute('keyTimes',times); var value=document.getElementById('mend_key_value').value; if(value) mend_tag.setAttribute('values',value); break; } document.getElementById("start_anime").click(); } /* remove_all_anime.onclick = function(){ console.log('Enter remove_all_anime'); var core_tag=Drag_elem; var mend_tag=null; var mend_tag=Drag_elem.querySelector('animate,animateMotion,animateTransform'); while(mend_tag){ var parent=mend_tag.parentNode; if(parent.nodeName=='use') { //use idを元の位置に戻す var fig_id=parent.getAttribute('xlink:href'); fig_id=fig_id.slice( 1 ) ; var fig_tag=document.getElementById(fig_id); console.log('anime tag=',fig_id,fig_tag); fig_tag.setAttribute("transform", "translate(0,0)"); parent.remove(); } var attr_d=mend_tag.getAttribute('attributeName'); console.log('mend_tag and attributeName=',mend_tag,attr_d); if(mend_tag.nodeName=='animate' && attr_d=="d") { var def_path=parent.parentNode.parentNode.getAttribute('deform'); if(def_path==null) def_path=""; console.log('def_path,node=',def_path,parent.parentNode.parentNode); var pathes=def_path.split(','); console.log('pathes=',pathes); for(let k=0;k0;k--) { var tagn=parent.childNodes[k-1]; var add_transf=tagn.getAttribute('transform'); if(add_transf==null) add_transf=""; var transf=old_transf+add_transf; if(transf) tagn.setAttribute("transform",transf); console.log('move_tag=',tagn); $(tagn).insertAfter(parent); } parent.remove(); console.log('parent removed'); } } } var mend_tag=Drag_elem.querySelector('animate,animateMotion,animateTransform'); console.log('animeNode and Drag_elem=',mend_tag,Drag_elem); } var rect=former_parent.querySelector('rect'); if(rect) rect.remove(); var fig=Drag_elem.getAttribute('fig'); var old_transf=Drag_elem.getAttribute('transform'); if(old_transf==null) old_transf=""; console.log('Drag=',Drag_elem); if(fig=='anime' || fig=='anime_top') { var len=Drag_elem.childNodes.length; for(let k=len;k>0;k--) { var tagn=Drag_elem.childNodes[k-1]; var add_transf=tagn.getAttribute('transform'); if(add_transf==null) add_transf=""; var transf=old_transf+add_transf; if(transf) tagn.setAttribute("transform",transf); console.log('move_tag=',tagn); $(tagn).insertAfter(Drag_elem); } Drag_elem.remove(); } console.log('Drag_elem removed'); } remove_one_anime.onclick = function() { console.log('Check tags Tags No.=',select_mend_node,svg_mend_tags); var mend_tag=svg_mend_tags[select_mend_node]; console.log('mend_tag=',mend_tag); var node_type=check_animetype(mend_tag); console.log('anime_type=',node_type); document.getElementById('anim_tag_num').value=String(select_mend_node+1); switch (node_type){ case "path_along_g": var parent=mend_tag.parentNode; var fig_id=parent.getAttribute('xlink:href'); fig_id=fig_id.slice( 1 ) ; var fig_tag=document.getElementById(fig_id); console.log('anime tag=',fig_id,fig_tag); fig_tag.setAttribute("transform", "translate(0,0)"); parent.remove(); break; case "path_along_tx": case "one-stroke": mend_tag.remove(); break; case "draw_hide": var parent=mend_tag.parentNode; var mask_tag=parent.querySelector('mask'); if(mask_tag) { mask_tag.remove(); var path_tag=parent.querySelector('path'); if(path_tag) path_tag.removeAttribute("mask"); } mend_tag.remove(); break; case "path_deform": var parent=mend_tag.parentNode; var attr_d=mend_tag.getAttribute('attributeName'); console.log('mend_tag and attributeName=',mend_tag,attr_d); if(mend_tag.nodeName=='animate' && attr_d=="d") { var def_path=parent.parentNode.parentNode.getAttribute('deform'); if(def_path==null) def_path=""; console.log('def_path,node=',def_path,parent.parentNode.parentNode); var pathes=def_path.split(','); console.log('pathes=',pathes); for(let k=0;k0;k--) { var tagn=Drag_elem.childNodes[k-1]; var add_transf=tagn.getAttribute('transform'); if(add_transf==null) add_transf=""; var transf=old_transf+add_transf; if(transf) tagn.setAttribute("transform",transf); console.log('move_tag=',tagn); $(tagn).insertAfter(Drag_elem); } Drag_elem.remove(); } } */ $("#svg_tag_next").on("click", function(){ console.log('Nextが押されました'); var max_num=svg_mend_tags.length; var nn=select_mend_node+1; console.log('now select max_num nn=',select_mend_node,max_num,nn); if(nn // //Chain Svgの展開 // cnsvg_tags=svgtag_decompose(header_term[5],header_term[6]); cnsvg_nums=cnsvg_tags.length; //console.log('tags leng=',cnsvg_tags.length,cnsvg_tags); //CnSvg(複数個所の読み込みと展開 //console.log('*Start set cnsvg tag leng=',cnsvg_tags.length); for(var i=0;i console.log('***Enter to Save confirm19 ***'); var text_to_serv; var svg_tag; //Saveの順番は①最初にChain_CnSvgが最初でその後②本体HTML(含む本体SVG(svg_00)のsaveとする //CnSvgのsaveはcnsvg_tagで分かる console.log('**Save CnSvg Enter leng=',cnsvg_tags.length,cnsvg_tags); for(var i=0;i 30000) || (tex_to_serv.length > 30000)) ) { alert('保存できません。Cant Save Document! too large in this Demo version'); } else { $.ajax({ url: "/db_serv/update/", async:true, type: "POST", data: { "description":tex_to_serv, "my_header":my_header, "my_overview":my_overview, "cnsvg_nums":cnsvg_nums, "cnsvg_header":tags_header, "svg":svg_tag, }, dataType: 'json' }) .done((data) => { //結果が帰ってきたら、表示します。 //console.log('**Doc really saved Ajax Returned result=',data); }); alert('保存されました。document saved!!'); } // var tags_header=cntags_compose(); // update_head(header_term[0],String(cnsvg_nums),tags_header); //console.log('My_Data mend nk=',header_term[0],String(cnsvg_nums),tags_header); Popcheck=0; //console.log('***End of confirm19 ***'); My Note console.log('Enter to script21'); document.getElementById("htmlfile").click(); //外部htmlfileの読み込み var html_read = document.getElementById("htmlfile"); //ダイアログでファイルが選択された時 html_read.addEventListener('change',function(evt){ var file = evt.target.files; //FileReaderの作成 var reader = new FileReader(); //テキスト形式で読み込む reader.readAsText(file[0]); console.log('file=',file[0],file[0].name); //読込終了後の処理 reader.onload = function(ev){ var htmlText = reader.result; // htmlText=unescapeHtml(unescape(htmlText)); console.log('load text=',htmlText); const domParser = new DOMParser(); var testDoc = domParser.parseFromString(htmlText, 'text/html'); console.log('testDoc=',testDoc); var tags=testDoc.querySelector('#texx') console.log('texx=',tags); var set_tag=document.getElementById('tab1'); var del_tag=document.getElementById('texx'); //var doc_scr=document.getElementById('doc_script'); var doc_scr=testDoc.querySelector('#doc_script'); console.log('remove doc_scr=',doc_scr); if(doc_scr) { doc_script=doc_scr.innerHTML; doc_scr.remove(); } //var seo_phr=document.getElementById('seo_phrase'); var seo_phr=testDoc.querySelector('#seo_phrase'); console.log('remove seo_phr=',seo_phr); if(seo_phr) { seo_phrase=seo_phr.innerHTML; seo_phr.remove(); } var boot_script=testDoc.querySelector('#boot_script'); if(boot_script) boot_script.remove(); var style_def=testDoc.querySelector('#style_def'); if(style_def) style_def.remove(); if(tags) { //from My Note console.log('old texx=',del_tag); set_tag.removeChild(del_tag); set_tag.appendChild(tags); //chainsvgの設定を行う var terms=my_header.split('|<=>|'); cnsvg_nums=0; cnsvg_tags=[]; svg_tag_del(); var all_divsvg=$("div[id^='divsvg']"); //console.log('divsvg_all=',all_divsvg); //新規My_CnSvgのAjaxへの設定と書き込み var cn_header=cnhead_compose('0','CnSvg','False','False'); for(let i=1;i|'+terms[1]+'|<=>|'+terms[2]+'|<=>|'+terms[3]+'|<=>|'+terms[0]+'|<=>|'+String(cnsvg_nums)+'|<=>|'+cntags_compose(); console.log('header=',my_header); first_container=tags; var texxx=first_container.innerHTML; header_term=my_header.split('|<=>|'); //console.log('header=',header_term); } else { //from outer html var divsvg='div'+svg_now; var divsvg_tag=document.getElementById(divsvg); console.log('divsvg=',divsvg_tag); tags=testDoc.body; var leng=tags.children.length; for(k=0;k|'); overview_term[4]=old4; overview_term[5]=old5; if(overview_term[8]=='') { default_margin_L=sys_marginL; default_margin_R=sys_marginR; } else { var parms=overview_term[8].split(/;|,/); console.log('sys parm=',parms); default_margin_L=parms[2]; default_margin_R=parms[3]; exe_auto=0; if(parms[5]=='auto') exe_auto=1; my_disp_onoff=[]; if(parms[6]=='slider') { slider_pause_time=parms[7]; slider_screen_width=parms[8]; } if(parms[9]=='disponoff') { k=10; while(parms[k] && k { click_event_disp_onoff_handler(e); } } init_set_disponoff(); my_overview=""; overview_term[0]=""; overview_term[1]=""; overview_term[2]=""; overview_term[3]=""; console.log('reset my_overview=',my_overview,overview_term[0]); // fgedit.selectedIndex=2; // chng_mode(); org_container = document.getElementById('svg_00'); svg_now='svg_00'; set_svg(svg_now); save_from="html"; } }); console.log('Enter to script22'); function parse_and_set_svgfiles(svgText) { const domParser = new DOMParser(); var testSVGDoc = domParser.parseFromString(svgText, 'image/svg+xml'); var testparsedSVG = testSVGDoc.childNodes[0]; console.log('**import svg length=',testparsedSVG.children.length,testparsedSVG,' Node=',testparsedSVG.nodeName); if(testparsedSVG.nodeName!='svg') { svgText = '' +svgText+''; } const parsedSVGDoc = domParser.parseFromString(svgText, 'image/svg+xml'); var parsedSVG = parsedSVGDoc.childNodes[0]; //解釈svgはすべてchildNodes[0]にある var gname=parsedSVG.getAttribute('class'); if(gname='') { var group = document.createElementNS('http://www.w3.org/2000/svg', 'g'); var fig_id='g'+(Date.now()).toString(); group.setAttribute('id', fig_id); group.setAttribute('class', 'outgroup'); container.appendChild(group); for (let nn = 0; nn < parsedSVG.children.length; nn++) { console.log('**import svg **nodename= ',parsedSVG.children[nn].nodeName,parsedSVG.children[nn]); group.appendChild(parsedSVG.children[nn].cloneNode(true)); } } else { console.log('**import svg length=',parsedSVG.children.length,parsedSVG,' Node=',parsedSVG.nodeName); var group = document.createElementNS('http://www.w3.org/2000/svg', 'g'); if(parsedSVG.children[0].nodeName!='g' || parsedSVG.children.length>1) { var fig_num=Number(Date.now()); var leng=parsedSVG.children.length; for (let nn = leng-1 ; nn >= 0; nn--) { console.log('**import svg **nodename nn=',nn,parsedSVG.children[nn].nodeName,parsedSVG.children[nn]); var fig_id='g'+(fig_num+nn).toString(); parsedSVG.children[nn].setAttribute('id', fig_id); group.prepend(parsedSVG.children[nn]); } } else { group=parsedSVG.children[0]; } var fig_id='g'+(Date.now()).toString(); group.setAttribute('id', fig_id); group.setAttribute('class', 'outgroup'); container.appendChild(group); console.log('**import apend svg group=',group); } } function builtin_page_script_next(){ var dialog_val=""; var script_val=""; var css_val=""; if(doc_script) { //doc_script=doc_script.replace('|<=>|', '|<==>|'); var src=doc_script.split('|<==>|'); if(src[0]) dialog_val=src[0]; if(src[1]) script_val=src[1]; if(src[2]) css_val=src[2]; } else { alert('script not found in this page'); return; } if(dialog_val) { if(css_val) applyCustomCss(css_val); const domParser = new DOMParser(); var parsed = domParser.parseFromString(dialog_val, 'text/html'); console.log('parsed',parsed); const new_node = parsed.childNodes[0]; console.log('new_node=',new_node); var node = new_node.querySelector('html body > *'); var node_id=node.getAttribute('id'); var node_set_node=document.querySelector('body'); var n_node=document.getElementById(node_id); if(!n_node) node_set_node.appendChild(node); } var s_tag=document.getElementById('sys_temp'); if(script_val) { //文字列をJavaScriptコードとして実行する //eval(script_val) var scp=document.createElement('script'); scp.innerHTML=script_val; s_tag.appendChild(scp); } if(scp) scp.remove(); } function exe_page_script_next(s_name="",my_tag="",from_tag=""){ var script_val=$("#user_page_script").val(); console.log('Enter exe_page_script script=',script_val); var dialog_val=$("#user_dialog").val(); //console.log('dialog=',dialog_val); var css_val=$("#user_css").val(); //console.log('css=',css_val); if(css_val=='') doc_script=dialog_val+'|<==>|'+script_val; else doc_script=dialog_val+'|<==>|'+script_val+'|<==>|'+css_val; console.log('doc_script=',doc_script); if(dialog_val) { //page_scriptの場合 defaultのmy_tagを作成して、from_tagがあればparmをもってくる var tag_name='pagescript' var tag_n='u__'+tag_name; var exist=document.getElementById(tag_n); if(!exist) { var prog_tag = document.createElement('botton'); prog_tag.setAttribute('id',tag_n); prog_tag.setAttribute('style','display:none;'); u_present_pos=prog_tag; var base_script=document.getElementById('sys_expand'); base_script.appendChild(prog_tag); console.log('make present tag=',u_present_pos); } if(from_tag) { var fm_tag=from_tag.slice( 3 ) ; var parm=get_result(fm_tag); console.log('get result from formar=',parm); set_parm(tag_name,JSON.stringify({parm:parm})); } if(css_val) applyCustomCss(css_val); const domParser = new DOMParser(); var parsed = domParser.parseFromString(dialog_val, 'text/html'); console.log('parsed',parsed); const new_node = parsed.childNodes[0]; console.log('new_node=',new_node); var node = new_node.querySelector('html body > *'); var b_node=document.querySelector('body'); var node_id=node.getAttribute('id'); var node_set_node=document.querySelector('body'); var n_node=document.getElementById(node_id); if(!n_node) node_set_node.appendChild(node); u_addtext=[]; for(let k=0;k=0;k--){ s_tag.childNodes[k].remove(); } if(script_val) { //文字列をJavaScriptコードとして実行する //eval(script_val) var scp=document.createElement('script'); scp.innerHTML=script_val; s_tag.appendChild(scp); } // if(scp) scp.remove(); console.log('At exe_page end s_tag=',s_tag); } function parze_script_kind(script) { var kind=0; var script_stack=[]; var scripts=script.split(/\n/); var leng=scripts.length; console.log('script leng=',leng,scripts); for(k=0;k|', '|<==>|'); var src=doc_script.split('|<==>|'); console.log('src leng=',src.length,src); var script_val=src[1]; var dialog_val=src[0]; var css_val=src[2]; if(dialog_val) { if(css_val) applyCustomCss(css_val); const domParser = new DOMParser(); var parsed = domParser.parseFromString(dialog_val, 'text/html'); console.log('parsed',parsed); const new_node = parsed.childNodes[0]; console.log('new_node=',new_node); var node = new_node.querySelector('html body > *'); var b_node=document.querySelector('body'); u_addtext=[]; for(let k=0;k|', '|<==>|'); var code=dia_script.split('|<==>|'); var script_tag = document.createElement('script'); //下記数行は get_newtag_for_user(my_tag) var prog_tag = document.createElement('botton'); u_present_pos=prog_tag; prog_tag.setAttribute('id',tag_n); prog_tag.setAttribute('style','display:none;'); base_script.appendChild(prog_tag); console.log('make present tag=',tag_n,u_present_pos); set_status(tag_name,JSON.stringify({status:'1'})); // if(from_tag) { var parm=get_result(from_tag); //var parm=get_result_db(from_tag); console.log('get result from fermar=',parm); set_parm(tag_name,JSON.stringify({parm:parm})); } else set_parm(tag_name,JSON.stringify({parm:''})); // set_result(tag_name,JSON.stringify({result:'0'})); // const observer = new MutationObserver(callback_next); //console.log('mutation observer set tag=',prog_tag); // observer.observe(prog_tag, {attributes: true}); // Wait for script execution to complete using a custom event //var scriptEvent = new CustomEvent('script-executed'); script_tag.innerHTML =code[1] ; //console.log('script code=',code[1]); if(code[0]) { if(code[2]) applyCustomCss(code[2]); const domParser = new DOMParser(); var parsed = domParser.parseFromString(code[0], 'text/html'); //console.log('parsed',parsed); const new_node = parsed.childNodes[0]; //console.log('new_node=',new_node); var node = new_node.querySelector('html body > *'); var node_id=node.getAttribute('id'); var node_set_node=document.querySelector('body'); var n_node=document.getElementById(node_id); if(!n_node) node_set_node.appendChild(node); } base_script.appendChild(script_tag); //if(u_get_csvlines) // set_result(tag_name,JSON.stringify({status:u_get_csvlines})); // set_status(tag_name,JSON.stringify({status:'10'})); //console.log('u_result=',u_get_csvlines); can_go_next=1; console.log('@@@@@End set_common script_tag=',tag_name,sys_expand); } if(script_tag) script_tag.remove(); } function applyCustomCss(custom_css){ //HTML and javascript test By page script var css_div=document.getElementById('css_test_0001'); if(!css_div) { var css_div= document.createElement('style'); css_div.setAttribute('id','css_test_0001'); } else css_div.innerHTML=""; css_div.innerHTML=custom_css; var base=document.querySelector('body'); base.insertBefore(css_div, base.firstChild); } var u_present_pos=''; function set_mystatus(status) { console.log('Enter to set_mystatus=',status); if(u_present_pos) { u_present_pos.setAttribute('status',status); console.log('after set status=',JSON.parse(u_present_pos.getAttribute('status'))); return true; } else return false; } function set_myresult(result) { console.log('Enter to set_myresult'); if(u_present_pos) { u_present_pos.setAttribute('result',result); console.log('after set myresult=',JSON.parse(u_present_pos.getAttribute('result'))); return true; } else return false; } function get_myparm() { console.log('Enter to get_myparm'); console.log('get_myparm present=',u_present_pos); if(u_present_pos) { var parm=JSON.parse(u_present_pos.getAttribute('parm')); console.log('parm=',parm); ret=parm; } else ret='undone'; console.log('Enter to get_myparm return=',ret); return ret; } function get_status(user_tag) { console.log('Enter to get_status name=',user_tag); var tagn='u__'+user_tag; var exist=document.getElementById(tagn); if(exist) { var status=JSON.parse(exist.getAttribute('status')); console.log('status=',status); ret=status.status; } else ret='undone'; console.log('Enter to check_userstatus return=',tagn,exist,ret); return ret; } function set_status(user_tag,status) { console.log('Enter to set_status name=',user_tag); var tagn='u__'+user_tag; var exist=document.getElementById(tagn); if(exist) { exist.setAttribute('status',status); console.log('after set status=',JSON.parse(exist.getAttribute('status'))); return true; } else return false; console.log('Enter to set_userstatus return=',tagn,exist); } function get_parm(user_tag) { console.log('Enter to get_parm name=',user_tag); var tagn='u__'+user_tag; var exist=document.getElementById(tagn); if(exist) { var parm=JSON.parse(exist.getAttribute('parm')); console.log('parm=',parm); ret=parm; } else ret='undone'; console.log('Enter to get_userparm return=',user_tag,ret); return ret; } function set_parm(user_tag,parm) { console.log('Enter to set_parm name=',user_tag); var tagn='u__'+user_tag; var exist=document.getElementById(tagn); if(exist) { exist.setAttribute('parm',parm); console.log('after set status=',JSON.parse(exist.getAttribute('parm'))); return true; } else return false; } function get_result(user_tag) { console.log('Enter to get_result name=',user_tag); var tagn='u__'+user_tag; var exist=document.getElementById(tagn); if(exist) { var result=JSON.parse(exist.getAttribute('result')); console.log('result=',result); ret=result; } else ret='undone'; console.log('Enter to get_userresult return=',user_tag,ret); return ret; } function set_result(user_tag,result) { console.log('Enter to set_result name=',user_tag); var tagn='u__'+user_tag; var exist=document.getElementById(tagn); if(exist) { exist.setAttribute('result',result); console.log('after set status=',JSON.parse(exist.getAttribute('result'))); return true; } else return false; } /* //mouseup時の処理 // var hand_up=org_container.addEventListener('mouseup', draw_up,false); document.onmouseup = function (e) { console.log('mouse up'); var range=window.getSelection(); if(range!='') { console.log('selection=',range); } ++Up_count; drag.isMouseDown = false; if(mouse_Error) { mouse_Error=false; Up_count=0; } if(Move_mode) { console.log('canceled Move_mode'); switch (Draw_mode){ case 'Aux': console.log('** element drag stop'); drag.isMouseDown = false; draw_op.aux_pos=e.clientX; break; case 'Basic': default: console.log('** element draw stop'); draw_up(e); break; } Move_mode=0; Up_count=0; console.log('After basic_moveup=',Up_count); } // disp_yn_check(); }//mouseup end] */ function disp_yn_check() { if((for_cloud=='yes') || (for_demo=='yes')) ch_check_func(); } function ch_check_func() { console.log('####### enter check func for_cloud,for_demo=',for_cloud,for_demo); var flag=some_check(); if(flag==0 && ch_check_flag==1) { console.log('none To disp old & flag=',ch_check_flag,flag); let menyu_dispnone = document.getElementById('fgedit'); menyu_dispnone.options[3].style.display="block"; document.getElementById('mail_to_who').style.display="inline"; document.getElementById('Exp').style.display="inline"; document.getElementById('send_to_yourPc').style.display="inline"; document.getElementById('export_symbols').style.display="inline"; document.getElementById('export_icon').style.display="inline"; ch_check_flag=0; } else if(flag==1 && ch_check_flag==0) { console.log('disp To none old & flag=',ch_check_flag,flag); let menyu_dispnone = document.getElementById('fgedit'); menyu_dispnone.options[3].style.display="none"; document.getElementById('mail_to_who').style.display="none"; document.getElementById('Exp').style.display="none"; document.getElementById('send_to_yourPc').style.display="none"; document.getElementById('export_symbols').style.display="none"; document.getElementById('export_icon').style.display="none"; ch_check_flag=1; } } function some_check() { var flag=0; var canv=document.getElementById("mesh_canv"); var tags=canv.getElementsByTagName('symbol'); if(tags.length>0) { flag=1; console.log('symbol detected tags=',tags); return flag; } tags=document.querySelector('animate'); if(tags) { flag=1; console.log('animate detected tags=',tags); return flag; } tags=document.querySelector('animateMotion'); if(tags) { flag=1; console.log('animateMotion detected tags=',tags); return flag; } return flag; } Google_chars.onclick = function() { navigator.permissions.query({ name: 'clipboard-read' }).then(result => { // If permission to read the clipboard is granted or if the user will // be prompted to allow it, we proceed. if (result.state === 'granted' || result.state === 'prompt') { getClipboardContents(); after_clipboard_google(); } }); } async function after_clipboard_google() { const result2 = await getClipboardContents(); console.log('global=',global_htmldoc); var s_node = global_htmldoc.querySelectorAll('html body > *'); console.log('paste_node leng=',s_node.length,s_node); //この段階でA>H3の場合もある var node=document.createElement('div'); /* for(k=0;kH3'); console.log('extract1=',i,exst1); exst1.forEach(function (element) { var par_tag=element.parentNode; console.log('search=',par_tag);//粗これで良いか? var title=par_tag.querySelector('H3').innerText; var new_title=document.createElement('H4'); new_title.innerText=title; new_title.setAttribute('fig', '見出し'); var href=par_tag.getAttribute( "href"); var newNode =document.createElement('a'); newNode.href=href; newNode.setAttribute('fig', 'リンク'); newNode.appendChild(new_title); newNode.setAttribute('target', '_blank'); newNode.setAttribute('rel', 'noopener'); console.log('newNode=',title,newNode,new_title); node.appendChild(newNode); //.MUxGbd.wuQ4Ob.WZ8Tjf //OK var text_a=s_node.querySelector('SPAN'); var text_b=""; var node_a=s_node[i].querySelectorAll('SPAN.wuQ4Ob.WZ8Tjf'); if(node_a.length>0) { console.log('s_node num=',i,' node_a=',node_a,node_a[0]); var grand=node_a[0].parentNode; text_b=grand.innerText; } else { var node_b=s_node[i].querySelectorAll('DIV SPAN'); var text_a=""; var text_b=""; var old_text=""; var cnt=0; for(k=0;k20) text_b=text_b+text_a; } old_text=text_a; } console.log('cant catch abstract text=',text_b,node_b); } if(text_b!="") { var text_p=document.createElement('P'); text_p.innerText=text_b; console.log('text=',text_b); node.appendChild(text_p); } }); } if(!doc_edit_node) alert('set green line!!'); else $(node).insertAfter(doc_edit_node); tag_trees=[]; tag_trees=get_tagStruct(node,0); if(tag_trees.length>0) doc_deep_level=0; doc_edit_node=node; doc_origin_node=node; console.log('After add tag tree=',tag_trees,'levels=',tag_trees.length); display_current_tag(doc_edit_node); } function one_search(s_node,node) { var element=s_node.querySelector('A>H3'); console.log('one_search element=',element); if(element==null) return; var par_tag=element.parentNode; console.log('search=',par_tag);//粗これで良いか? var title=par_tag.querySelector('H3').innerText; var new_title=document.createElement('H4'); new_title.innerText=title; new_title.setAttribute('fig', '見出し'); var href=par_tag.getAttribute( "href"); var newNode =document.createElement('a'); newNode.href=href; newNode.setAttribute('fig', 'リンク'); newNode.appendChild(new_title); newNode.setAttribute('target', '_blank'); newNode.setAttribute('rel', 'noopener'); console.log('newNode=',title,newNode,new_title); node.appendChild(newNode); //.MUxGbd.wuQ4Ob.WZ8Tjf //OK var text_a=s_node.querySelector('SPAN'); var text_b=""; var node_a=s_node.querySelectorAll('SPAN.wuQ4Ob.WZ8Tjf'); if(node_a.length>0) { console.log('s_node num=',i,' node_a=',node_a,node_a[0]); var grand=node_a[0].parentNode; text_b=grand.innerText; } else { var node_b=element.querySelectorAll('DIV SPAN'); var text_a=""; text_b=""; for(let k=0;k20) text_b=text_b+text_a; } //console.log('cant catch abstract text=',text_b,node_b); } if(text_b!="") { var text_p=document.createElement('P'); text_p.innerText=text_b; console.log('text=',text_b); node.appendChild(text_p); } } Cr_to_Br(); function Cr_to_Br() { // $("#Cr_to_Br").on("click", function(){ if(Editmode!='Edit') return; console.log('*****Enter Cr to Br') const selection = window.getSelection(); if(!selection.rangeCount) return; var range = selection.getRangeAt(0); // 選択範囲を含む親タグを取り出す //console.log('rang parent=',range.commonAncestorContainer); var sel_rang=range.commonAncestorContainer; var ptags = sel_rang.querySelector('.divsvg'); var tdom=''; //console.log('*****ptags=',ptags); if(ptags) tdom=ptags; else tdom=sel_rang; // var n_node=tdom.childNodes.length; //console.log('sel nth=',n_node,tdom); //console.log('selectio start=',selection.anchorNode.nodeValue,'selection end=',selection.extentNode.nodeValue); // var nums=num_search(tdom,selection.anchorNode.nodeValue,tdom,selection.extentNode.nodeValue); //console.log('***********selectio number first=',nums[0],'last=',nums[1]); var nstr=cut_tags(tdom); var newar=nstr.split(''); console.log('str=',nstr,'new array=',newar); nstr=''; for(let i=0;i<=newar.length-1;i++) { if(newar[i]!='') nstr=nstr+newar[i]+''; } var new_ptag= document.createElement("p"); new_ptag.innerHTML=nstr; console.log(new_ptag); var clsname='' if(tdom.nodeName=='DIV') clsname=tdom.getAttribute('class'); if(tdom.nodeName=='DIV' && clsname=='divsvg') { console.log('replace first tag=',tdom); tdom.innerHTML=''; tdom.insertBefore(new_ptag, tdom.firstChild); } else { $(new_ptag).insertAfter(tdom); tdom.remove(); } if(my_html_design_dialog) { tag_trees=[]; tag_trees=get_tagStruct(new_ptag,0); if(tag_trees.length>0) doc_deep_level=0; doc_edit_node=new_ptag; doc_origin_node=new_ptag; console.log('After add tag tree=',tag_trees,'levels=',tag_trees.length); cancel_green_line(); setto_current_tag(doc_edit_node); set_parms(); display_current_tag(doc_edit_node); } } //function Cr to Br end Br_to_Cr(); function Br_to_Cr() { //$("#Br_to_Cr").on("click", function(){ if(Editmode!='Edit') return; console.log('*****Enter Br to Cr') const selection = window.getSelection(); if(!selection.rangeCount) return; place_to_tag(); console.log('after place to tag=',doc_edit_node); var node=doc_edit_node.nodeName; if(node!='P' && node!='DIV') return; var range = selection.getRangeAt(0); console.log('selection start=',selection.anchorNode.nodeValue,'selection end=',selection.extentNode.nodeValue); var term1=selection.anchorNode.nodeValue; var term2=selection.extentNode.nodeValue; var first=-1; var last=-1; var temp=0; var len=doc_edit_node.childNodes.length; for(var k=len-1;k>=0;k--) { if(doc_edit_node.childNodes[k].textContent.includes(term1)) first=k; if(doc_edit_node.childNodes[k].textContent.includes(term2)) last=k; console.log('k=',k,doc_edit_node.childNodes[k].textContent,'first=',first,'last=',last); if(last>=0) { n_text=doc_edit_node.childNodes[k].textContent; console.log('n_text=',n_text,doc_edit_node.childNodes[k].innerHTML,doc_edit_node.childNodes[k]); if(n_text!='') { var new_ptag= document.createElement("p"); new_ptag.innerHTML=n_text; if(temp==0) { var temp_id='t'+(Date.now()).toString(); new_ptag.setAttribute('id', temp_id); temp=1; } $(new_ptag).insertAfter(doc_edit_node.childNodes[k]); doc_edit_node.removeChild(doc_edit_node.childNodes[k]); } else doc_edit_node.removeChild(doc_edit_node.childNodes[k]); } if(first>=0) break; } reform_html_after_ptag(); node=document.getElementById(temp_id); node.removeAttribute('id'); if(my_html_design_dialog) { tag_trees=[]; tag_trees=get_tagStruct(node,0); if(tag_trees.length>0) doc_deep_level=0; doc_edit_node=node; doc_origin_node=node; console.log('After add tag tree=',tag_trees,'levels=',tag_trees.length); cancel_green_line(); setto_current_tag(doc_edit_node); display_current_tag(doc_edit_node); } } //function Br to Cr end var font_import=[["Noto Serif JP","@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+JP&display=swap');"], ["Noto Sans JP","@import url('https://fonts.googleapis.com/css2?family=Open+Sans&display=swap');"], ];