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>
*™*

Reply via email to