Hi,.

Thanks very much

I've updated the javascript.
No need to say that I'm blocking on the addEventListener

Here is the code I've updated which generates an internal error when I open 
the tiddly

Here is what I did

   - Created 2 variables (widgetParent, widgetNextSib) to save the 
   parameters passed to the render fct
   - Created a myScript fct which does what you have coded in the render 
   but using the (widgetParent, widgetNextSib) variables
   - Added the listener and invoking the MyScript

No need to say that I'm a dummy tiddly développer ...

Thanks for your help
Vpl


\*/

(function(){


/*jslint node: true, browser: true */

/*global $tw: false */

"use strict";


var Widget = require("$:/core/modules/widgets/widget.js").widget;


var ABCWidget = function(parseTreeNode,options) {

this.initialise(parseTreeNode,options);

};


// vpl variables

var widgetParent;

var widgetNextSib;


/*

Inherit from the base widget class

*/

ABCWidget.prototype = new Widget();


/*

Render this widget into the DOM

*/

ABCWidget.prototype.render = function(parent,nextSibling) {

       // vpl

       widgetParent = parent;

       widgetNextSib = nextSibling;


this.parentDomNode = parent;

        var width = parent.clientWidth*2/3;

this.computeAttributes();

this.execute();

this.pNode = this.document.createElement("div");

parent.insertBefore(this.pNode,nextSibling);

if (this.source) {

this.tid  = $tw.wiki.getTiddlerText(this.source)

ABCJS.renderAbc(this.pNode, "%%staffwidth "+width+"\n"+this.tid);

}

this.domNodes.push(this.pNode);

};


/*

Compute the internal state of the widget

*/

ABCWidget.prototype.execute = function() {

this.source = this.getAttribute("source");

};


/*

Refresh the widget by ensuring our attributes are up to date

*/

ABCWidget.prototype.refresh = function(changedTiddlers) {

var changedAttributes = this.computeAttributes();

if(changedAttributes["source"]||changedTiddlers[this.source]) {

this.refreshSelf();

return true;

}

return false;

};


exports["abc"] = ABCWidget;


var myScript = function() {

this.parentDomNode = widgetParent;

        var width = parent.clientWidth*2/3;

this.computeAttributes();

this.execute();

this.pNode = this.document.createElement("div");

parent.insertBefore(this.pNode,widgetNextSib);

if (this.source) {

this.tid  = $tw.wiki.getTiddlerText(this.source)

ABCJS.renderAbc(this.pNode, this.tid);

}

this.domNodes.push(this.pNode);



};


ABCWidget.prototype.addEventListener("resize", myScript);


})();



Le lundi 7 décembre 2015 03:28:21 UTC-6, BJ a écrit :
>
> you could use this as a starting point:
>
>       this.parentDomNode = parent;
> var width = parent.clientWidth*2/3;
>       this.computeAttributes();
>       this.execute();
>       this.pNode = this.document.createElement("div");
>       parent.insertBefore(this.pNode,nextSibling);
>       if (this.source) {
>               this.tid  = $tw.wiki.getTiddlerText(this.source)
>               ABCJS.renderAbc(this.pNode, "%%staffwidth 
> "+width+"\n"+this.tid);
>
>
> to make it reactive to the resize there's this event:
>
> *object*.addEventListener("resize", *myScript*);
>
>
>
> On Monday, December 7, 2015 at 12:03:57 AM UTC, vpl wrote:
>>
>> I've found in the documentation that a default width of the music is set 
>> to 740 pixels.
>> Here is the link: 
>> https://code.google.com/p/abcjs/wiki/InstallationDocumentation
>> Search for Basic abcjs
>> I've found in your widget how you invoke the renderAbc
>>
>> ABCJS.renderAbc(this.pNode, this.tid);
>>
>> Is there a way to retrieve the current tiddler size from the widget code 
>> such as I could pass it to the rederAbc ?
>>
>> But will it solve the issue as I guess that tiddly will not invoke the 
>> widget each time the tiddler size is changed, won't it ?
>>
>> Vpl
>>
>>
>> Le dimanche 6 décembre 2015 12:47:49 UTC+1, BJ a écrit :
>>>
>>> The music is an svg image with a fixed width determined by  %%staffwidth 
>>> (if used) within the abc notation, If the staffwidth is set greater than 
>>> the width of the tiddler then it will overflow the tiddler. (actually 
>>> overflow the containing html element)
>>>
>>> I have no idea how it chooses a default width, maybe it is in the abc 
>>> documentation?
>>>
>>> You could also have on the github of abc - do a search of the issues... 
>>> ,maybe there is some css that can be set?
>>>
>>> On Sunday, December 6, 2015 at 10:12:46 AM UTC, vpl wrote:
>>>>
>>>> Hi,
>>>>
>>>>
>>>> Look at the below example.
>>>>
>>>> The music sheet size is exeeding the tiddler normal frame
>>>>
>>>>
>>>> VIncent
>>>>
>>>>
>>>>
>>>>
>>>> <https://lh3.googleusercontent.com/-HuYv901pYlM/VmQJ7ofDqHI/AAAAAAAAAD0/JDqmDh83JC8/s1600/ex-abc-pb.PNG>
>>>>
>>>>
>>>>
>>>> Le dimanche 6 décembre 2015 10:17:19 UTC+1, BJ a écrit :
>>>>>
>>>>> I am not sure what you are referring to, if its the width of the music 
>>>>> image then this is controlled by (eg)
>>>>>
>>>>>
>>>>> %%staffwidth 500 
>>>>>
>>>>>
>>>>>
>>>>> On Sunday, December 6, 2015 at 8:29:33 AM UTC, vpl wrote:
>>>>>>
>>>>>> Hi BJ,
>>>>>>
>>>>>> I was able to make it running based on your contribution. THanks a 
>>>>>> lot !
>>>>>> The issue I see here is that the rendering size is not reduced 
>>>>>> according to the window size (when I reduce the tiddly size).
>>>>>> FOr example
>>>>>> When we display the tt1 of your example and reduce the browser 
>>>>>> windows, below a certain size the music sheet is not reduced correctly.
>>>>>> Where does it come from ?
>>>>>>
>>>>>> Regards
>>>>>>
>>>>>>
>>>>>> Le dimanche 6 décembre 2015 06:16:08 UTC+1, vpl a écrit :
>>>>>>>
>>>>>>> Hi BJ,
>>>>>>>
>>>>>>> This is exactly what I was looking for.
>>>>>>> How did you do that ?
>>>>>>> On my side I was blocked at the following stage 
>>>>>>> I'm not a plugin expert and much more confortable at the moment with 
>>>>>>> the macro option (at least I can make running a small one..)
>>>>>>> It seems that you developed a plugin to solve that ?
>>>>>>> Will appreciate any description as I need to use this capabilities 
>>>>>>> now and would like to understand how it is integrated with tiddlyWiki
>>>>>>>
>>>>>>> Regards
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --------------------------------------------------------------------------------------------
>>>>>>> What I've done
>>>>>>> - copy the abcjs_basic_latest-min.js file in the same directory as 
>>>>>>> my tiddlywiki
>>>>>>> - created a "abcjs_basic_latest-min.js" tiddler, tagged with 
>>>>>>> $:/tags/RawMarkup and containing
>>>>>>> <script src="abcjs_basic_latest-min.js" 
>>>>>>> type="text/javascript"></script>
>>>>>>> - created a tiddly called "$:/inmysocks/macros/render-abc.js" 
>>>>>>>    - of type application/javascript 
>>>>>>>    - with an attribute module-type called macro
>>>>>>>    - containing
>>>>>>> /*
>>>>>>> Run the macro
>>>>>>> */
>>>>>>> exports.run = function(music) {
>>>>>>> //Make each date object.
>>>>>>> var result;
>>>>>>> result = ABCJS.renderAbc('notation', music);
>>>>>>>
>>>>>>> //result = 'ABC';
>>>>>>> return result;
>>>>>>>
>>>>>>> - created a test-abc tiddler containing
>>>>>>> <<render-abc "%%staffwidth 500\nX: 1\nT: Chorus\nV: T1 clef=treble 
>>>>>>> name="Soprano"\nV: T2 clef=treble name="Alto"\nV: B1 clef=bass 
>>>>>>> name="Tenor"\nV: B2 clef=bass name="Bass"\nL:1/8\nK:G\nP:First 
>>>>>>> Part\n[V: 
>>>>>>> T1]"C"ed"Am"ed "F"cd"G7"gf |\n[V: T2]GGAA- A2BB |\n[V: B1]C3D- DF,3 
>>>>>>> |\n[V: 
>>>>>>> B2]C,2A,,2 F,,2G,,2 |">>
>>>>>>>
>>>>>>> - the macro is running in the sense that when I comment the result = 
>>>>>>> ABCJS.renderAbc ... and uncomment the result = 'ABC' I get the ABC 
>>>>>>> display
>>>>>>> - But when I do the reverse I don't have anything displayed.
>>>>>>>
>>>>>>> The Dev tools does nott give me any error ...
>>>>>>>
>>>>>>> I've also tried to copy paste the full content of 
>>>>>>> abcjs_basic_latest-min.js file into bcjs_basic_latest-min.js tiddler. 
>>>>>>>   In this case, when I close and re-open tiddlyWiki I get the 
>>>>>>> content of the .js displayed just below the getting-start tiddler ...
>>>>>>>
>>>>>>> -----------------------------------------------
>>>>>>>
>>>>>>>
>>>>>>> Le vendredi 4 décembre 2015 19:29:57 UTC+1, BJ a écrit :
>>>>>>>>
>>>>>>>> Hi vpl,
>>>>>>>> I have put a widget together that could be used as a starting point:
>>>>>>>>
>>>>>>>> http://abcmusic.tiddlyspot.com/
>>>>>>>>
>>>>>>>> view it in ff (chrome won't load the lib from github)
>>>>>>>>
>>>>>>>> Feel free to use this if you want to develop abc as a plugin, if 
>>>>>>>> you don't then maybe I will push it forward a bit more.
>>>>>>>>
>>>>>>>> cheers
>>>>>>>> BJ
>>>>>>>>
>>>>>>>> On Friday, December 4, 2015 at 9:10:11 AM UTC, vpl wrote:
>>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I'm trying to render abcjs music notation in tiddlywiki
>>>>>>>>> Bopland.org is closed now and Vexflow licensing model is not 
>>>>>>>>> adapted.
>>>>>>>>> abcjs (http://abcjs.net/) looks very interesting and maintained.
>>>>>>>>>
>>>>>>>>> Looking at other thread I understand that 
>>>>>>>>>  - I have to create a tiddler containing the 
>>>>>>>>> abcjs_basic_latest-min.js content (available here 
>>>>>>>>> https://raw.githubusercontent.com/paulrosen/abcjs/master/bin/abcjs_basic_2.2-min.js
>>>>>>>>> )
>>>>>>>>>  - tag it with systemConfig
>>>>>>>>>
>>>>>>>>> Then I block as I don't understand how to render the music content 
>>>>>>>>> using abcjs
>>>>>>>>>
>>>>>>>>> I've tested on a html page the following code and it works
>>>>>>>>>
>>>>>>>>> <html>
>>>>>>>>> <head>
>>>>>>>>> <meta http-equiv="content-type" content="text/html; charset=UTF-8" 
>>>>>>>>> />
>>>>>>>>> <meta name="viewport" content="width=device-width, 
>>>>>>>>> initial-scale=1.0">
>>>>>>>>> <title>abcjs basic demo</title>
>>>>>>>>> <script src="abcjs_basic_latest-min.js" 
>>>>>>>>> type="text/javascript"></script>
>>>>>>>>> </head>
>>>>>>>>> <body>
>>>>>>>>> <h1>abcjs basic demo page</h1>
>>>>>>>>> <div id="notation"></div>
>>>>>>>>>
>>>>>>>>> <script type="text/javascript">
>>>>>>>>> var chorus = '%%staffwidth 500\nX: 1\nT: Chorus\nV: T1 clef=treble 
>>>>>>>>> name="Soprano"\nV: T2 clef=treble name="Alto"\nV: B1 clef=bass 
>>>>>>>>> name="Tenor"\nV: B2 clef=bass name="Bass"\nL:1/8\nK:G\nP:First 
>>>>>>>>> Part\n[V: 
>>>>>>>>> T1]"C"ed"Am"ed "F"cd"G7"gf |\n[V: T2]GGAA- A2BB |\n[V: B1]C3D- DF,3 
>>>>>>>>> |\n[V: 
>>>>>>>>> B2]C,2A,,2 F,,2G,,2 |';
>>>>>>>>> </script>
>>>>>>>>>
>>>>>>>>> <div>
>>>>>>>>> <script type="text/javascript">
>>>>>>>>> ABCJS.renderAbc('notation', chorus);
>>>>>>>>> </script>
>>>>>>>>> </div>
>>>>>>>>>
>>>>>>>>> </body>
>>>>>>>>> </html>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> As you see, abcjs renders the content using ABCJS.renderAbc(). 
>>>>>>>>> But we have to pass to this method a string content (in our case a 
>>>>>>>>> javascript variable) representing the music I want to render.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Could somebody help me here, 
>>>>>>>>> I'm block on tiddly and need an expert to unlock me ..
>>>>>>>>>
>>>>>>>>> With regards
>>>>>>>>>
>>>>>>>>> Vpl
>>>>>>>>>
>>>>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/tiddlywiki.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/a8602c95-d8db-436f-acd5-ea90cb1ebfaa%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to