Once I found the JavaScript Console in Chrome, it was easy to determine I was missing a comma in one place. It works as expected now. :)
On Fri, May 17, 2013 at 3:19 PM, Mike Tutkowski < mike.tutkow...@solidfire.com> wrote: > I found the JavaScript Console in Chrome. I've been doing Java for over 15 > years, but am still pretty new to JavaScript. :) > > > On Fri, May 17, 2013 at 2:37 PM, Mike Tutkowski < > mike.tutkow...@solidfire.com> wrote: > >> Pranav - Quick question for you (or, of course, anyone else who might >> know): >> >> I've made some changes to the JavaScript and rebuilt the system. >> >> When I log into the GUI and look down at the Service Offerings tab at the >> bottom left, there is an icon, but no text. If I click on it, nothing is >> displayed. :) I'm not that familiar with JavaScript debugging. What do you >> suggest I do in such a situation to debug the problem? I've read and >> re-read my code looking for simple syntax errors and such, but don't see >> any. I did update from master this morning, so hopefully this is not just a >> problem that's in master at the time being and I didn't notice it until I >> made my changes. >> >> Thanks! >> >> >> On Fri, May 17, 2013 at 8:24 AM, Mike Tutkowski < >> mike.tutkow...@solidfire.com> wrote: >> >>> Thanks, Pranav! >>> >>> >>> On Thu, May 16, 2013 at 11:20 PM, Pranav Saxena < >>> pranav.sax...@citrix.com> wrote: >>> >>>> So within this block , you could use anyone of the exception >>>> handling mechanisms as shown below – **** >>>> >>>> ** ** >>>> >>>> >>>> $.ajax({ >>>> url:'API CMD', >>>> data:data , >>>> success:function(args){ >>>> args.response.success(); >>>> },**** >>>> >>>> >>>> error:function(args){ >>>> **** >>>> >>>> args.response.error(parseXMLHttpResponse(json)); // >>>> This would handle the exception handling when the API throws an error** >>>> ** >>>> >>>> OR**** >>>> >>>> cloudStack.dialog.notice( { message:_l(‘ Minlops valus >>>> is greater than Max lops , please enter a correct value ‘) });**** >>>> >>>> } >>>> }); >>>> >>>> Thanks,**** >>>> >>>> Pranav**** >>>> >>>> ** ** >>>> >>>> *From:* Mike Tutkowski [mailto:mike.tutkow...@solidfire.com] >>>> *Sent:* Friday, May 17, 2013 10:44 AM >>>> *To:* Pranav Saxena >>>> >>>> *Subject:* Re: Example code for GUI**** >>>> >>>> ** ** >>>> >>>> Great, thanks!**** >>>> >>>> ** ** >>>> >>>> One quick question comes to mind: If the criteria I'm checking fails, >>>> is there a way I should exit the code block and have an error message >>>> displayed or should those kinds of problems be returned once the API call >>>> is executing on the server side?**** >>>> >>>> ** ** >>>> >>>> Thanks again!**** >>>> >>>> ** ** >>>> >>>> On Thu, May 16, 2013 at 10:59 PM, Pranav Saxena < >>>> pranav.sax...@citrix.com> wrote:**** >>>> >>>> Yeah , so these dependencies/relationships would be handled when you >>>> are passing these parameters to the API call within the actions block. >>>> Below is the code snippet which will help you accomplish your tasks (might >>>> require little tweaking ) but that's how the structure should look like . >>>> >>>> action: function(args) { >>>> var dataObj = { >>>> minlops: args.data.minlops, >>>> maxlops:args.data.maxlops, >>>> burstlops:args.data.burstlops >>>> >>>> }; >>>> >>>> if(args.data.minlops != "" && args.data.maxlops !="" && >>>> args.data.burstlops !="") { >>>> >>>> if(args.data.maxlops >= args.data.minlops){ >>>> $.extend(data, dataObj) >>>> }); >>>> } >>>> } >>>> >>>> $.ajax({ >>>> url:'API CMD', >>>> data:data , >>>> success:function(args){ >>>> args.response.success(); >>>> },**** >>>> >>>> >>>> >>>> >>>> }); >>>> >>>> >>>> Let me know if you need any more help. >>>> >>>> Thanks, >>>> Pranav**** >>>> >>>> >>>> -----Original Message----- >>>> From: Mike Tutkowski [mailto:mike.tutkow...@solidfire.com]**** >>>> >>>> Sent: Friday, May 17, 2013 9:40 AM >>>> To: dev@cloudstack.apache.org >>>> Subject: Re: Example code for GUI**** >>>> >>>> Hi Pranav, >>>> >>>> Thanks for posting the link to your commit, as well. :) >>>> >>>> I'm trying to set up my fields based on the pattern we already have >>>> today where the Admin can check a box to allow the User to specify a disk >>>> size. >>>> >>>> In my case, I'd like the Admin to check a box if he wants the User to >>>> potentially specify Min, Max, and Burst IOPS. The trick is that Min, Max, >>>> and Burst IOPS should either all be filled in or none of them filled in >>>> (and Max has to be >= Min and Burst has to be >= Max). Right now, I'm >>>> playing around with code that makes these three fields depend on the >>>> checkbox (if it's checked, they get displayed). Can you teach me a bit >>>> about how I might specify the relationships I'm looking for? >>>> >>>> Thanks! >>>> >>>> Here's what I have right now (I believe it handles displaying the IOPS >>>> fields if the checkbox is selected, but that's about it): >>>> >>>> isIopsCustomized: { >>>> label: 'label.custom.disk.iops', >>>> docID: 'helpDiskOfferingCustomDiskIops', >>>> isBoolean: true, >>>> isReverse: true, >>>> isChecked: false >>>> }, >>>> minIops: { >>>> label: 'label.disk.iops.min', >>>> docID: 'helpDiskOfferingDiskIopsMin', >>>> dependsOn: 'isIopsCustomized', >>>> validation: { required: true, number: true } >>>> }, >>>> maxIops: { >>>> label: 'label.disk.iops.max', >>>> docID: 'helpDiskOfferingDiskIopsMax', >>>> dependsOn: 'isIopsCustomized', >>>> validation: { required: true, number: true } >>>> }, >>>> burstIops: { >>>> label: 'label.disk.iops.burst', >>>> docID: 'helpDiskOfferingDiskIopsBurst', >>>> dependsOn: 'isIopsCustomized', >>>> validation: { required: true, number: true } >>>> }, >>>> >>>> >>>> On Thu, May 16, 2013 at 8:40 PM, Pranav Saxena < >>>> pranav.sax...@citrix.com>wrote: >>>> >>>> > Hey Ilya , >>>> > >>>> > So this is how you declare the following items - >>>> > >>>> > <object name> :{ >>>> > >>>> > createForm:{ >>>> > >>>> > fields:{ >>>> > >>>> > //CheckBox Item >>>> > <item object name> :{ >>>> > Label:'Label Name', >>>> > isBoolean:true, // This statement creates a >>>> checkbox >>>> > for you >>>> > isChecked: true // make it false for the >>>> checkbox to >>>> > be unchecked by default >>>> > >>>> > >>>> > >>>> > }, >>>> > >>>> > //Drop Down >>>> > <itemobjectname2>:{ >>>> > Label:'label name2', >>>> > select:function(args):{ >>>> > var items=[]; >>>> > items.push(id:'memory' , description: 'the >>>> > description appears in the drop down'); >>>> > >>>> > } >>>> > } >>>> > } >>>> > } >>>> > >>>> > } >>>> > >>>> > The actual handling is done by the widgets (dialog.js) , once you >>>> > follow the above mentioned code structure . In case you want to design >>>> > a multi-edit table (entering multiple values in a single table ), the >>>> > structure for that is prepared by another widget (multiEdit.js) . That >>>> > has a slightly complex way to invoke the relevant widget functions. >>>> > Let me know in case you need any more information on this . The CPU >>>> > overcommit and memory overcommit feature was committed by me . Here >>>> > is the commit - >>>> > >>>> > >>>> https://git-wip-us.apache.org/repos/asf?p=cloudstack.git;a=blobdiff;f= >>>> > ui/scripts/system.js;h=d76aa3e6a2e8d0d009728174f07d600c28febd89;hp=e51 >>>> > bf90ba81445f176607823857e38f930d17c11;hb=215621daa88883dde4f09d55fde49 >>>> > e0bf0cd75f5;hpb=2beb66fd32bd8b176a7b4eff2d0a34aa4d278045 >>>> > >>>> > Let me know if you need any more help on this . >>>> > >>>> > Thanks, >>>> > Pranav >>>> > >>>> > -----Original Message----- >>>> > From: Musayev, Ilya [mailto:imusa...@webmd.net] >>>> > Sent: Friday, May 17, 2013 6:56 AM >>>> > To: dev@cloudstack.apache.org >>>> > Subject: Re: Example code for GUI >>>> > >>>> > Thanks Isaac >>>> > Regards >>>> > Ilya >>>> > >>>> > >>>> > >>>> > -------- Original message -------- >>>> > From: Isaac Chiang <isaacchi...@gmail.com> >>>> > Date: >>>> > To: dev@cloudstack.apache.org,"Musayev, Ilya" <imusa...@webmd.net> >>>> > Subject: Re: Example code for GUI >>>> > >>>> > >>>> > Hi Musayev, >>>> > You'll find out that there are "createForm" object under >>>> > listView(or detailView) actions in each file, e.g., instance.js, >>>> > accounts.js. If you need a selection, you can just define a attribute >>>> > for createForm like following: >>>> > >>>> > select: function(args) { >>>> > //... >>>> > } >>>> > >>>> > and pass returned data from ajax call to >>>> > >>>> > args.response.success({data: 'your json data'}) >>>> > >>>> > Then the CS's frontend engine will make a selection for you. >>>> > >>>> > Regards >>>> > >>>> > Isaac >>>> > >>>> > >>>> > On Fri, May 17, 2013 at 7:48 AM, Musayev, Ilya <imusa...@webmd.net> >>>> wrote: >>>> > >>>> > > Thank you Wei . >>>> > > >>>> > > Any idea on how can I change the field type from in UI from text >>>> > > field to multi-select or checkbox group? Is this CSS only change or >>>> > > is there more to it? >>>> > > >>>> > > >>>> > > >>>> > > -------- Original message -------- >>>> > > From: Wei ZHOU <ustcweiz...@gmail.com> >>>> > > Date: >>>> > > To: dev@cloudstack.apache.org >>>> > > Subject: Re: Example code for GUI >>>> > > >>>> > > >>>> > > From my point view: >>>> > > >>>> > > (1) UI: >>>> > > ui/scripts/*.js (such as network.js, configuration.js) >>>> > > ui/dictionary.jsp >>>> > > client/WEB-INF/classes/resources/messages.properties >>>> > > >>>> > > (2) Java >>>> > > *Cmd.java (commands) >>>> > > *VO.java (tables) >>>> > > *Manager.java >>>> > > *ManagerImpl.java >>>> > > >>>> > > Wei >>>> > > >>>> > > >>>> > > 2013/5/17 Musayev, Ilya <imusa...@webmd.net> >>>> > > >>>> > > > We actually have a similar question on the GUI part, we've done >>>> > > > lots of backend work, but the GUI part does not seem very >>>> > > > straightforward. Would someone know how to add options into GUI? >>>> > > > >>>> > > > Also, How can I change the field type from in UI from text field >>>> > > > to multi-select or checkbox group? What is the controlling >>>> > > > configuration >>>> > > file? >>>> > > > >>>> > > > If you can mention general flow on making GUI changes/addition and >>>> > > perhaps >>>> > > > point to an example, it would be truly appreciated. >>>> > > > >>>> > > > Thanks >>>> > > > ilya >>>> > > > >>>> > > > > -----Original Message----- >>>> > > > > From: Mike Tutkowski [mailto:mike.tutkow...@solidfire.com] >>>> > > > > Sent: Thursday, May 16, 2013 6:26 PM >>>> > > > > To: dev@cloudstack.apache.org >>>> > > > > Subject: Re: Example code for GUI >>>> > > > > >>>> > > > > It looks like your feature revolves around rate limiting, if I >>>> > > understand >>>> > > > > correctly. >>>> > > > > >>>> > > > > It seems like I could leverage a bit of what you're doing here, >>>> > > > > but I'd >>>> > > > need >>>> > > > > additional fields in the Add Disk Offering dialog (and DB) since >>>> > > > > we >>>> > > > support >>>> > > > > min, max, and burst values for IOPS (as opposed to just a max). >>>> > > > > >>>> > > > > What do you think? >>>> > > > > >>>> > > > > >>>> > > > > On Thu, May 16, 2013 at 4:18 PM, Mike Tutkowski < >>>> > > > > mike.tutkow...@solidfire.com> wrote: >>>> > > > > >>>> > > > > > Thanks for the info, Wei. >>>> > > > > > >>>> > > > > > I am in the process of writing a storage plug-in for Edison's >>>> > > > > > new storage framework. The idea is to be able to have a single >>>> > > > > > SAN volume associated with a single data disk. In our SAN, you >>>> > > > > > can set Min, Max, and Burst IOPS values on a volume-by-volume >>>> > > > > > basis and I'd like to see CloudStack support this. >>>> > > > > > >>>> > > > > > Can you tell me a bit about how you see our features >>>> overlapping? >>>> > > > > > Perhaps I will not need to update the GUI at all because you >>>> > > > > > might already be putting in place such new fields? >>>> > > > > > >>>> > > > > > Thanks! >>>> > > > > > >>>> > > > > > >>>> > > > > > On Thu, May 16, 2013 at 4:13 PM, Wei ZHOU >>>> > > > > > <ustcweiz...@gmail.com> >>>> > > > > wrote: >>>> > > > > > >>>> > > > > >> Mike, >>>> > > > > >> >>>> > > > > >> I am working on Disk I/O Throttling now. The source code has >>>> > > > > >> been verified on 4.0.2. It need more test on master branch. >>>> > > > > >> I hope to finish it before the deadline of 4.2 feature freeze >>>> > > > (31-5-2013). >>>> > > > > >> >>>> > > > > >> For more information: >>>> > > > > >> https://issues.apache.org/jira/browse/CLOUDSTACK-1301 >>>> > > > > >> >>>> > > > > >> >>>> > > > > >>>> https://cwiki.apache.org/confluence/display/CLOUDSTACK/VM+Disk+I >>>> > > > > O+ >>>> > > > > Th >>>> > > > > r >>>> > > > > >> ottling >>>> > > > > >> >>>> > > > > >> Wei >>>> > > > > >> >>>> > > > > >> >>>> > > > > >> 2013/5/16 Mike Tutkowski <mike.tutkow...@solidfire.com> >>>> > > > > >> >>>> > > > > >> > Hi everyone, >>>> > > > > >> > >>>> > > > > >> > I'm trying to add a few fields to the GUI's Add Disk >>>> > > > > >> > Offering dialog >>>> > > > > >> (min, >>>> > > > > >> > max, and burst IOPS). >>>> > > > > >> > >>>> > > > > >> > Once I have these fields in place, they will of course need >>>> > > > > >> > to >>>> > > pass >>>> > > > > >> > this information to the backend and the data will need to >>>> > > > > >> > end up >>>> > > in >>>> > > > > >> > new >>>> > > > > >> fields >>>> > > > > >> > in the DB. >>>> > > > > >> > >>>> > > > > >> > I was wondering if anyone knew of example code I might be >>>> > > > > >> > able to >>>> > > > > >> pattern >>>> > > > > >> > my changes off of. The one that comes to mind is CPU and >>>> > > > > >> > RAM overcommit changes to the Add Cluster dialog (but I'm >>>> > > > > >> > having a >>>> > > hard >>>> > > > > >> > time tracking these down in Git). >>>> > > > > >> > >>>> > > > > >> > Thanks! >>>> > > > > >> > >>>> > > > > >> > -- >>>> > > > > >> > *Mike Tutkowski* >>>> > > > > >> > *Senior CloudStack Developer, SolidFire Inc.* >>>> > > > > >> > e: mike.tutkow...@solidfire.com >>>> > > > > >> > o: 303.746.7302 >>>> > > > > >> > Advancing the way the world uses the >>>> > > > > >> > cloud<http://solidfire.com/solution/overview/?video=play> >>>> > > > > >> > *(tm)* >>>> > > > > >> > >>>> > > > > >> >>>> > > > > > >>>> > > > > > >>>> > > > > > >>>> > > > > > -- >>>> > > > > > *Mike Tutkowski* >>>> > > > > > *Senior CloudStack Developer, SolidFire Inc.* >>>> > > > > > e: mike.tutkow...@solidfire.com >>>> > > > > > o: 303.746.7302 >>>> > > > > > Advancing the way the world uses the >>>> > > > > > cloud<http://solidfire.com/solution/overview/?video=play> >>>> > > > > > *(tm)* >>>> > > > > > >>>> > > > > >>>> > > > > >>>> > > > > >>>> > > > > -- >>>> > > > > *Mike Tutkowski* >>>> > > > > *Senior CloudStack Developer, SolidFire Inc.* >>>> > > > > e: mike.tutkow...@solidfire.com >>>> > > > > o: 303.746.7302 >>>> > > > > Advancing the way the world uses the >>>> > > > > cloud<http://solidfire.com/solution/overview/?video=play> >>>> > > > > *(tm)* >>>> > > > >>>> > > > >>>> > > >>>> > >>>> >>>> >>>> >>>> -- >>>> *Mike Tutkowski* >>>> *Senior CloudStack Developer, SolidFire Inc.* >>>> e: mike.tutkow...@solidfire.com >>>> o: 303.746.7302 >>>> Advancing the way the world uses the >>>> cloud<http://solidfire.com/solution/overview/?video=play> >>>> *(tm)***** >>>> >>>> >>>> >>>> **** >>>> >>>> ** ** >>>> >>>> -- >>>> *Mike Tutkowski***** >>>> >>>> *Senior CloudStack Developer, SolidFire Inc.***** >>>> >>>> e: mike.tutkow...@solidfire.com**** >>>> >>>> o: 303.746.7302**** >>>> >>>> Advancing the way the world uses the >>>> cloud<http://solidfire.com/solution/overview/?video=play> >>>> *™***** >>>> >>> >>> >>> >>> -- >>> *Mike Tutkowski* >>> *Senior CloudStack Developer, SolidFire Inc.* >>> e: mike.tutkow...@solidfire.com >>> o: 303.746.7302 >>> Advancing the way the world uses the >>> cloud<http://solidfire.com/solution/overview/?video=play> >>> *™* >>> >> >> >> >> -- >> *Mike Tutkowski* >> *Senior CloudStack Developer, SolidFire Inc.* >> e: mike.tutkow...@solidfire.com >> o: 303.746.7302 >> Advancing the way the world uses the >> cloud<http://solidfire.com/solution/overview/?video=play> >> *™* >> > > > > -- > *Mike Tutkowski* > *Senior CloudStack Developer, SolidFire Inc.* > e: mike.tutkow...@solidfire.com > o: 303.746.7302 > Advancing the way the world uses the > cloud<http://solidfire.com/solution/overview/?video=play> > *™* > -- *Mike Tutkowski* *Senior CloudStack Developer, SolidFire Inc.* e: mike.tutkow...@solidfire.com o: 303.746.7302 Advancing the way the world uses the cloud<http://solidfire.com/solution/overview/?video=play> *™*