Example #1
0
    def prepare(self):
        super(PolyGrid, self).prepare()
        if not getattr(self, 'id', None):
            self.id = str(uuid4())

        Knowledge = get_knowledge_session("sqlite:///knowledge.db")
        #entity = Entity.by_name(self.model)
        self.entity = Knowledge.query(Entity).filter(Entity.name.like('user_%')).first()

        #colNames = get_colnames_from_entity(entity)
        #colModel = get_colmodel_from_entity(entity)
        colModel, colNames = get_colmodel_and_colnames_from_entity(Knowledge, 'user_%')

        params = {
            'url': '/grid/query?like=user_%',
            'datatype': 'json',
            'colNames': colNames,
            'colModel': colModel,
            'height': 550,
            'rowNum': 25,
            #'rowList': [10,20,30],
            'pager': '#%s_pager' % self.id,
            'sortname': 'id',
            'viewrecords': True,
            'sortorder': "desc",
            'caption': self.entity.name,
            'autowidth': True,
            'loadui': 'block',
            #'shrinkToFit': True,
            'forcefit': True,
            }

        self.add_call(jQuery('#' + self.id)
                        .jqGrid(params)
                        .navGrid('#%s_pager' % self.id, {
                            'add': False,
                            'del': False,
                            'edit': False,
                            'search': False,
                            }, {}, {}, {}, {'multipleSearch': True}))

        self.add_call(jQuery('#' + self.id)
                        .jqGrid('filterToolbar',{
                            'stringResult': True,
                            'searchOnEnter': False
                            }));

        self.add_call(jQuery('#' + self.id)
                        .jqGrid('navButtonAdd', '#%s_pager' % self.id, {
                            'caption': 'Columns',
                            'title': 'Reorder Columns',
                            'onClickButton': js_callback("""
                                function() {
                                    jQuery('#%s').jqGrid('columnChooser');
                                }
                            """ %  self.id),
                            }))
Example #2
0
 def prepare(self):
     self.topic = str(uuid4())
     super(MokshaFeedReaderWidget, self).prepare()
     self.add_call(jQuery('#' + self.id).splitter({
         'splitVertical': True,
         'outline': True,
         'sizeLeft': True,
         'anchorToWindow': True,
         'accessKey': "I",
         }))
     self.add_call(jQuery('#RightPane').splitter({
         'splitHorizontal': True,
         'sizeTop': True,
         'accessKey': "H",
         }))
Example #3
0
    def prepare(self):
        super(Select2Mixin, self).prepare()
        # put code here to run just before the widget is displayed
        if 'id' in self.attrs:
            self.selector = "#" + self.attrs['id'].replace(':', '\\:')

        if self.placeholder:
            self.attrs['data-placeholder'] = self.placeholder
        if self.no_results_text:
            self.opts['no_results_text'] = self.no_results_text

        self.add_call(twj.jQuery(self.selector).select2(self.opts))

        if hasattr(self, "value"):
            if self.value is not None:
                values = []

                if isinstance(self.value, basestring):
                    self.value = [dict(id=self.value)]

                if not isinstance(self.value, list):
                    self.value = [self.value]

                for row in self.value:
                    temp_dict = {}
                    if hasattr(self, "fields"):
                        fields = [a.key for a in self.fields]
                    elif hasattr(row, "__table__"):
                        fields = row.__table__.columns.keys()
                    else:
                        fields = row.keys()

                    if hasattr(row, "__table__"):
                        for field in fields:
                            temp_dict[field] = unicode(getattr(row, field))
                    else:
                        for field in fields:
                            temp_dict[field] = unicode(row[field])

                    values.append(temp_dict)

                if "multiple" in self.opts:
                    if self.opts['multiple'] is False and len(values) > 0:
                        values = values[0]

                self.add_call(twj.jQuery(self.selector).select2("val", values))
Example #4
0
 def prepare(self):
     super(JSSortableDataGrid, self).prepare()
     if 'id' in self.attrs:
         selector = "#" + self.attrs['id'].replace(':', '\\:')
     else:
         selector = '.tablesorter'
     self.add_call(twj.jQuery(selector).tablesorter(dict(headers=self.headers,
         sortList=self.sortList)))
Example #5
0
 def prepare(self):
     super(CalendarTimePicker, self).prepare()
     self.add_call(twj.jQuery(self.selector).timepicker(dict(
         template=self.style,
         minuteStep=self.minuteStep,
         defaultTime=self.defaultTime,
         disableFocus=self.disableFocus
     )))
Example #6
0
 def prepare(self):
     super(JSSortableDataGrid, self).prepare()
     if 'id' in self.attrs:
         selector = "#" + self.attrs['id'].replace(':', '\\:')
     else:
         selector = '.tablesorter'
     self.add_call(
         twj.jQuery(selector).tablesorter(
             dict(headers=self.headers, sortList=self.sortList)))
Example #7
0
 def prepare(self):
     super(CalendarDateTimePicker, self).prepare()
     self.format = datefmtconverter.py2js(self.date_format)
     self.add_call(twj.jQuery(self.selector).datetimepicker(dict(
         format=self.format,
         language=self.language,
         **self.datetimepicker_args
     )))
     if 'id' in self.attrs:
         del self.attrs['id']
Example #8
0
 def prepare(self):
     super(Wysihtml5, self).prepare()
     wysihtml5_args = self.wysihtml5_args.copy()
     wysihtml5_args.update(stylesheets=self.stylesheets)
     if self.parser and self.parser in parsers:
         self.safe_modify('resources')
         self.resources.append(parsers[self.parser])
         wysihtml5_args.update(parserRules=twc.js_symbol('wysihtml5ParserRules'))
     if self.parser is False:
         wysihtml5_args.update(parser=twc.js_symbol('function(elementOrHtml, rules, context, cleanUp) { return elementOrHtml; }'))
     self.add_call(twj.jQuery(self.selector).wysihtml5(wysihtml5_args))
Example #9
0
 def prepare(self):
     super(CalendarDatePicker, self).prepare()
     self.add_call(twj.jQuery(self.selector).datepicker(dict(format=self.format, weekStart=self.weekStart)))
     if not self.value and self.required:
         if callable(self.default):
             self.value = self.default()
         else:
             self.value = self.default
     try:
         self.value = self.value.strftime(self.date_format)
     except:
         pass
Example #10
0
    def prepare(self):
        super(Select2Mixin, self).prepare()
        # put code here to run just before the widget is displayed
        if 'id' in self.attrs:
            self.selector = "#" + self.attrs['id'].replace(':', '\\:')

        if self.placeholder:
            self.attrs['data-placeholder'] = self.placeholder
        if self.no_results_text:
            self.opts['no_results_text'] = self.no_results_text

        self.add_call(twj.jQuery(self.selector).select2(self.opts))
Example #11
0
 def prepare(self):
     super(Wysihtml5, self).prepare()
     wysihtml5_args = self.wysihtml5_args.copy()
     wysihtml5_args.update(stylesheets=self.stylesheets)
     if self.parser and self.parser in parsers:
         self.safe_modify('resources')
         self.resources.append(parsers[self.parser])
         wysihtml5_args.update(
             parserRules=twc.js_symbol('wysihtml5ParserRules'))
     if self.parser is False:
         wysihtml5_args.update(parser=twc.js_symbol(
             'function(elementOrHtml, rules, context, cleanUp) { return elementOrHtml; }'
         ))
     self.add_call(twj.jQuery(self.selector).wysihtml5(wysihtml5_args))
Example #12
0
    def prepare(self):
        super(ChosenMixin, self).prepare()
        # put code here to run just before the widget is displayed
        if 'id' in self.attrs:
            self.selector = "#" + self.attrs['id'].replace(':', '\\:')

        if self.placeholder:
            self.attrs['data-placeholder'] = self.placeholder
        if self.no_results_text:
            self.opts['no_results_text'] = self.no_results_text
        if self.search_contains:
            self.opts['search_contains'] = True

        self.add_call(twj.jQuery(self.selector).chosen(self.opts))
Example #13
0
    def prepare(self):
        super(ChosenMixin, self).prepare()
        # put code here to run just before the widget is displayed
        if "id" in self.attrs:
            self.selector = "#" + self.attrs["id"].replace(":", "\\:")

        if self.placeholder:
            self.attrs["data-placeholder"] = self.placeholder
        if self.no_results_text:
            self.opts["no_results_text"] = self.no_results_text
        if self.search_contains:
            self.opts["search_contains"] = True

        self.add_call(twj.jQuery(self.selector).chosen(self.opts))
Example #14
0
 def prepare(self):
     super(CalendarDateTimePicker, self).prepare()
     self.add_call(
         twj.jQuery(self.selector).datetimepicker(
             dict(format=self.format, language=self.language, **self.datetimepicker_args)
         )
     )
     if not self.value and self.required:
         if callable(self.default):
             self.value = self.default()
         else:
             self.value = self.default
     try:
         self.value = unicode(self.value.strftime(self.date_format))
     except:
         pass
Example #15
0
 def prepare(self):
     super(Chosen, self).prepare()
     # put code here to run just before the widget is displayed
     if 'id' in self.attrs:
         self.selector = "#" + self.attrs['id'].replace(':', '\\:')
     self.add_call(twj.jQuery(self.selector).chosen())
Example #16
0
    def prepare(self):
        self.opts = self.opts.copy()

        # if we are a subclass of MultipleSelectField
        # we need to tell select2, we want multiple selection
        multiple = issubclass(self.__class__, twf.MultipleSelectField)
        if self.ondemand:
            self.template = "tw2.forms.templates.input_field"
            self.css_class = "big_drop"
            self.type = "hidden"

            # only tell select2 if its attached to an input element
            self.opts["multiple"] = multiple

            # if we have something in self.options turn it into an
            # array of {id:, text:} dicts
            # but don't try it if there is a data entry in opt already
            if self.options and "data" not in self.opts:
                data = self.options2data(self.options[:])
                if data:
                    self.opts["data"] = data

        super(Select2Mixin, self).prepare()
        # put code here to run just before the widget is displayed
        if 'id' in self.attrs:
            self.selector = "#" + self.attrs['id'].replace(':', '\\:')

        if self.placeholder:
            self.attrs['data-placeholder'] = self.placeholder
        if self.no_results_text:
            self.opts['no_results_text'] = self.no_results_text

        self.add_call(twj.jQuery(self.selector).select2(self.opts))

        if hasattr(self, "value"):
            if self.value is not None:
                values = []

                if isinstance(self.value, basestring):
                    self.value = [dict(id=self.value, text=self.value)]

                if not isinstance(self.value, list):
                    self.value = [self.value]
                else:
                    # all plain text entries are turned into dicts
                    def str2dict(elem):
                        if isinstance(elem, basestring):
                            return dict(id=elem, text=elem)
                        return elem

                    self.value = map(str2dict, self.value)
                for row in self.value:
                    temp_dict = {}
                    if hasattr(self, "fields"):
                        fields = [a.key for a in self.fields]
                    elif hasattr(row, "__table__"):
                        fields = row.__table__.columns.keys()
                    else:
                        fields = row.keys()

                    if hasattr(row, "__table__"):
                        for field in fields:
                            temp_dict[field] = unicode(getattr(row, field))
                    else:
                        for field in fields:
                            temp_dict[field] = unicode(row[field])

                    values.append(temp_dict)

                # if not attached to input element, we are
                # dealing only with plain values
                if not self.ondemand:
                    values = [
                        entry["id"] for entry in values if entry.has_key("id")
                    ]
                if not multiple and len(values) > 0:
                    values = values[0]

                if values:
                    self.add_call(
                        twj.jQuery(self.selector).select2("val", values))
Example #17
0
def test_jquery_js_function():
    from tw2.jquery import jQuery
    eq_(str(jQuery('foo')), 'jQuery("foo")')
    def prepare(self):
	self.opts = self.opts.copy()

        # if we are a subclass of MultipleSelectField
        # we need to tell select2, we want multiple selection
        multiple = issubclass(self.__class__, 
                              twf.MultipleSelectField)
	if self.ondemand:
	    self.template = "tw2.forms.templates.input_field"
	    self.css_class = "big_drop"
	    self.type = "hidden"

            # only tell select2 if its attached to an input element
            self.opts["multiple"] = multiple

	    # if we have something in self.options turn it into an 
            # array of {id:, text:} dicts
	    # but don't try it if there is a data entry in opt already
	    if self.options and "data" not in self.opts:
                data = self.options2data(self.options[:])
		if data:
		    self.opts["data"] = data
		    
        super(Select2Mixin, self).prepare()
        # put code here to run just before the widget is displayed
        if 'id' in self.attrs:
            self.selector = "#" + self.attrs['id'].replace(':', '\\:')

        if self.placeholder:
            self.attrs['data-placeholder'] = self.placeholder
        if self.no_results_text:
            self.opts['no_results_text'] = self.no_results_text

        self.add_call(twj.jQuery(self.selector).select2(self.opts))

        if hasattr(self, "value"):
            if self.value is not None:
                values = []

                if isinstance(self.value, basestring):
                    self.value = [dict(id=self.value, text=self.value)]

                if not isinstance(self.value, list):
                    self.value = [self.value]
                else:
                    # all plain text entries are turned into dicts
                    def str2dict(elem):
                        if isinstance(elem, basestring):
                            return dict(id=elem, text=elem)
                        return elem
                    self.value = map(str2dict, self.value)
                for row in self.value:
                    temp_dict = {}
                    if hasattr(self, "fields"):
                        fields = [a.key for a in self.fields]
                    elif hasattr(row, "__table__"):
                        fields = row.__table__.columns.keys()
                    else:
                        fields = row.keys()

                    if hasattr(row, "__table__"):
                        for field in fields:
                            temp_dict[field] = unicode(getattr(row, field))
                    else:
                        for field in fields:
                            temp_dict[field] = unicode(row[field])

                    values.append(temp_dict)

                # if not attached to input element, we are
                # dealing only with plain values
                if not self.ondemand:
                    values = [entry["id"] for entry in values 
                              if entry.has_key("id")]
                if not multiple and len(values) > 0:
                    values = values[0]

                if values:
                    self.add_call(twj.jQuery(self.selector).select2("val", values))