Project: stylus
Task (moderate): Class RankingQuestion (file 'common/RankingQuestion.js', 'common/RankingQuestion.styl') inherits from Question. Its constructor params are: title (string), name (string), preview (boolean), options (string array). Add a button (class 'add-ranking') in 'common/SurveyDesign.js', and click it to create a RankingQuestion (random title, unique name and 3 random options) whose root is prepended to the form. Click config panel button (class 'add-option') to add an option. In design page, each option row (class 'option'), user can click button (class 'remove-option') to remove an option, click option text (class 'option-text') to edit it in place. In preview page, insert after the target option (class 'option') when dragging the source option to drop into the target one; Store comma separated option indices in param-named control.