Hi Devs, On Tue, Feb 20, 2018 at 7:06 PM, Irindu Nugawela <iri...@wso2.com> wrote:
> Hi All, > I am implementing a feature for Widget Configuration Panel of Carbon > Dashboard's designer view, > to allow users(dashboard designers) to configure the properties of the > widgets such as the widget background color, widget title etc. > > The Current situation is that he user(dashboard designer) can only add or > drop one of the sample widgets or create a new widget of his/her own. but > has no control over the widget there after except for the complete removal > of it from the dashboard. > > The new feature will allow modification of certain properties of the > widget so that the user(dashboard designer) won't have to create a > completely new widget in order to make the changes in a existing widget. > > Every widget has a JSON file named widgetConf.json containing it's > configurations, > for example: widgetConf.json of widget Overall Revenue Info > > { > "name": "Overall Revenue Info", > "id": "OverallRevenueInfo", > "thumbnailURL": "", > "configs": { > "pubsub": { > "types": [ > "subscriber" > ] > } > } > } > > To implement the above feature the widgetConf.json needs to be changed as > follows > > { > > "name": "Widget Name", > > "id": "WidgetID", > > "thumbnailURL": "", > > "configs": { > > "pubsub": { > > "types": [ > > "subscriber" > > ] > > }, > > "options" : [ > > { > > "id": "sampleId1", > > "title": "sampleTitle1", > > "type" : "text", > > "defaultData" : "SamapleData" > > }, > > { > > "id": "sampleId2", > > "title": "sampleTitle2", > > "type" : "boolean", > > "defaultData" : "true" > > }, > > { > > "id": "sampleId3", > > "title": "sampleTitle3", > > "type" : "enum", > > "possibleValues" : ["SamapleEnumeratedData1"," > SamapleEnumeratedData2","SamapleEnumeratedData3"], > > "defaultData" : "SamapleEnumeratedData1" > > }, > > { > > "id": "sampleId4", > > "title": "sampleTitle4", > > "type" : "text", > > "defaultData" : "SamapleData" > > } > > ] > IMO, option list should be something like following: { id: "someId" title: "Some Title" type: { name: "text" defaultValue: "some-default-value" } }, { id: "someId" title: "Some Title" type: { name: "boolean" defaultValue: true } }, { id: "someId" title: "Some Title" type: { name: "enum" defaultValue: "foo" values: ["foo", "bar"] } } Why? - Proposed structure mixes properties of an option object with the properties of a type object. - Proposing structure gives a consistent object structure for an option object. id: "someId" title: "Some Title" type: {} - Therefore, we can easily introduce a new type without disrupting (much) to option list processing logic. - "defaultData" feels awkward to me, correct term is "defaultValue" Thanks. > } > > } > > } > > > All the user changeable options should be included in the options array > of the widgetConf.json with one option object for each user changeable > property. > > The Structure of each option object is as follows > > - > > id : this will be used to identify the corresponding property of the > widget the option value is supposed to change. > - > > title : this is the text displayed to the user(widget designer) at the > widget configuration panel. > - > > type : the type of option, it can be text, boolean or enum, > - > > A text type option results in a text box. > - > > A boolean type option results in a checkbox. > - > > An enum type option would result in a drop down select. > > > > The minimal widget configuration panel for a widget with no other user > changeable options would look like this. > > > [image: Inline image 1] > > > Please suggest any further changes required. > > > Thanks & regards, > Irindu > > Software Engineer Intern, WSO2 Inc. > Mobile: +94712325238 <+94%2071%20232%205238> > > -- Sajith Janaprasad Ariyarathna Senior Software Engineer; WSO2, Inc.; http://wso2.com/ <https://wso2.com/signature>
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev