Пример #1
0
    def from_post_source(self,
                         script,
                         data=None,
                         successFncs=None,
                         udpate_freq=None,
                         interval_name=None):
        """
    Description:
    -----------

    Attributes:
    ----------
    :param script:
    :param data:
    :param successFncs:
    :param udpate_freq: Optional, Set the data update frequency in second
    """
        if udpate_freq is not None:
            return self._report.js.window.setInterval(
                JsQuery.JQuery(self._report).getPyScript(
                    script, data, successFncs=successFncs),
                milliseconds=udpate_freq * 1000).setVar(interval_name)

        return JsQuery.JQuery(self._report).getPyScript(
            script, data, successFncs=successFncs)
Пример #2
0
  def jquery(self):
    """
    Description:
    -----------
    Link to the JQuery functions

    :rtype: JsQuery.JQuery
    """
    if self._jquery is None:
      self._jquery = JsQuery.JQuery(src=self._src, selector=JsQuery.decorate_var("#%s" % self._src.htmlCode), setVar=False)
    return self._jquery
Пример #3
0
    def jquery(self):
        """
    Description:
    ------------

    :rtype: JsQuery.JQuery
    """
        if self._jquery is None:
            self._jquery = JsQuery.JQuery(src=self._src,
                                          selector=JsQuery.decorate_var(
                                              "#%s" % self._src.htmlCode))
        return self._jquery
Пример #4
0
  def jquery(self) -> JsQuery.JQuery:
    """
    Description:
    -----------
    Link to the JQuery functions.

    :rtype: JsQuery.JQuery
    """
    if self._jquery is None:
      self._jquery = JsQuery.JQuery(component=self.component,
                                    selector=JsQuery.decorate_var("#%s" % self.component.htmlCode), set_var=False)
    return self._jquery
Пример #5
0
    def jquery(self) -> JsQuery.JQuery:
        """
    Description:
    ------------

    :rtype: JsQuery.JQuery
    """
        if self._jquery is None:
            self._jquery = JsQuery.JQuery(component=self.component,
                                          selector=JsQuery.decorate_var(
                                              "#%s" % self.component.htmlCode))
        return self._jquery
Пример #6
0
class SliderDate(Slider):
  name = "Slider Date"

  def __init__(self, page: primitives.PageModel, number: Union[float, list], min_val: float, max_val: float,
               width: Union[tuple, int], height: Union[tuple, int], helper: str, options: dict, html_code: str,
               profile: Union[dict, bool]):
    super(SliderDate, self).__init__(page, number, min_val, max_val, width, height, helper, options, html_code, profile)
    self.options.min, self.options.max, self.options.step = min_val, max_val, 86400

  _js__builder__ = '''
      const minDt = new Date(options.min).getTime() / 1000;
      const maxDt = new Date(options.max).getTime() / 1000;      
      options.min = minDt; options.max = maxDt;
      options.value = new Date(data).getTime() / 1000;
      %(jqId)s.slider(options).css(options.css)
      ''' % {"jqId": JsQuery.decorate_var("jQuery(htmlObj)", convert_var=False)}

  @property
  def dom(self) -> JsHtmlJqueryUI.JsHtmlSliderDate:
    """
    Description:
    -----------
    The Javascript Dom object.

    :rtype: JsHtmlJqueryUI.JsHtmlSliderDate
    """
    if self._dom is None:
      self._dom = JsHtmlJqueryUI.JsHtmlSliderDate(self, page=self.page)
    return self._dom
Пример #7
0
    def from_get(self, url, data=None, code=None):
        """
    Description:
    -----------

    """
        return JsQuery.JQuery(self.page).get(url, data)
Пример #8
0
class Lookup(Select):
    requirements = ('bootstrap-select', )

    def __init__(self, report, records, html_code, width, height, profile,
                 multiple, options):
        super(Lookup, self).__init__(report, records, html_code, width, height,
                                     profile, multiple, options)
        self._jsStyles['lookups'] = records

    _js__builder__ = '''
    var selectObj = %s; selectObj.empty(); const lookupData = options.lookups[data];
    if (typeof lookupData !== 'undefined') {
      for (var idx in lookupData) {
          const text = (typeof lookupData[idx].text !== 'undefined')? lookupData[idx].text : lookupData[idx].value;
          selectObj.append('<option value=' + lookupData[idx].value + '>' + text + '</option>'); }
      selectObj.selectpicker(options).val(lookupData).selectpicker('refresh')}
    else {
      selectObj.selectpicker(options).selectpicker('refresh')}''' % JsQuery.decorate_var(
        "htmlObj", convert_var=False)

    def __str__(self):
        self.page.properties.js.add_builders(
            "%s.selectpicker().selectpicker('refresh')" %
            JsQuery.decorate_var(self.dom.varId, convert_var=False))
        data_cls = self.get_attrs(
            css_class_names=self.style.get_classes()).replace(
                'class="', 'data-style="')
        return "<select %s></select>" % data_cls
Пример #9
0
class ListTournaments(Html.Html):
    name = 'Brackets'
    requirements = ('jquery-bracket', )
    _option_cls = OptList.OptionsListBrackets

    def __init__(self, page: primitives.PageModel, records, width: tuple,
                 height: tuple, options: Optional[dict],
                 profile: Optional[Union[bool, dict]]):
        super(ListTournaments, self).__init__(page,
                                              records,
                                              options=options,
                                              profile=profile,
                                              css_attrs={
                                                  "width": width,
                                                  "height": height
                                              })
        self.css({'overflow': 'auto', "padding": "auto", "margin": "auto"})

    _js__builder__ = '''options.init = data; %(jqId)s.bracket(options)
      ''' % {
        "jqId": JsQuery.decorate_var("htmlObj", convert_var=False)
    }

    def __str__(self):
        self.page.properties.js.add_builders(self.refresh())
        return "<div %s></div>" % self.get_attrs(
            css_class_names=self.style.get_classes())
Пример #10
0
 def var(self):
     """
 Description:
 -----------
 Return the calendar javaScript object reference after the builder.
 """
     return JsQuery.decorate_var("#%s" % self.htmlCode)
Пример #11
0
 def _js__builder__(self):
     return '''
   if (options.showUI){%(jqId)s.pivotUI(data, options)}
   else {%(jqId)s.pivot(data, options)}
   ''' % {
         "jqId": JsQuery.decorate_var("htmlObj", convert_var=False)
     }
Пример #12
0
class PivotUITable(PivotTable):
    _option_cls = OptTable.OptionsPivotUI

    def __init__(self, page: primitives.PageModel, records, rows, cols, width,
                 height, html_code, helper, options, profile):
        super(PivotUITable,
              self).__init__(page, records or [], rows, cols, width, height,
                             html_code, helper, options, profile)
        # to add all the columns in the table if nothing defined
        self.options.cols = cols or []
        self.options.rows = rows or []

    @property
    def options(self) -> OptTable.OptionsPivotUI:
        """
    Description:
    ------------
    Pivot Table options.

    Usage::

    :rtype: OptTable.OptionsPivotUI
    """
        return super().options

    _js__builder__ = '''
      %(jqId)s.pivotUI(data, options)
      ''' % {
        "jqId": JsQuery.decorate_var("htmlObj", convert_var=False)
    }
Пример #13
0
class Range(Slider):
  name = "Slider Range"
  is_range = True

  _js__builder__ = '''options.values = [Math.min(...data), Math.max(...data)]; %(jqId)s.slider(options).css(options.css)
      if (typeof options.handler_css !== 'undefined'){
        %(jqId)s.find('.ui-slider-handle').css(options.handler_css)}
      ''' % {"jqId": JsQuery.decorate_var("htmlObj", convert_var=False)}
Пример #14
0
 def __str__(self):
     self.page.properties.js.add_builders(
         "%s.selectpicker().selectpicker('refresh')" %
         JsQuery.decorate_var(self.dom.varId, convert_var=False))
     data_cls = self.get_attrs(
         css_class_names=self.style.get_classes()).replace(
             'class="', 'data-style="')
     return "<select %s></select>" % data_cls
Пример #15
0
    def jquery(self):
        """
    Description:
    ------------
    jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.
    Whether you're building highly interactive web applications or you just need to add a date picker to a form control, jQuery UI is the perfect choice.

    Related Pages:

      https://jqueryui.com/

    :rtype: JsQuery.JQuery
    """
        if self._jquery is None:
            self._jquery = JsQuery.JQuery(src=self._src,
                                          selector=JsQuery.decorate_var(
                                              "#%s" % self._src.htmlCode))
        return self._jquery
Пример #16
0
 def __str__(self):
     self._report._props.setdefault('js', {}).setdefault(
         "builders",
         []).append("%s.selectpicker().selectpicker('refresh')" %
                    JsQuery.decorate_var(self.dom.varId, convert_var=False))
     data_cls = self.get_attrs(
         pyClassNames=self.style.get_classes()).replace(
             'class="', 'data-style="')
     return "<select %s></select>" % data_cls
Пример #17
0
  def _js__builder__(self):
    return '''
      const minDt = new Date(options.min).getTime() / 1000;
      const maxDt = new Date(options.max).getTime() / 1000;

      options.min = minDt; options.max = maxDt;
      options.values = [new Date(data[0]).getTime() / 1000, new Date(data[1]).getTime() / 1000];
      %(jqId)s.slider(options).css(options.css)
      ''' % {"jqId": JsQuery.decorate_var("jQuery(htmlObj)", convert_var=False)}
Пример #18
0
 def _js__builder__(self):
     return '''
     var selectObj = %s; selectObj.empty(); const lookupData = options.lookups[data];
     if (typeof lookupData !== 'undefined') {
       for (var idx in lookupData) {
           const text = (typeof lookupData[idx].text !== 'undefined')? lookupData[idx].text : lookupData[idx].value;
           selectObj.append('<option value=' + lookupData[idx].value + '>' + text + '</option>'); }
       selectObj.selectpicker(options).val(lookupData).selectpicker('refresh')}
     else {selectObj.selectpicker(options).selectpicker('refresh')} ''' % JsQuery.decorate_var(
         "htmlObj", convert_var=False)
Пример #19
0
    def jquery_node(self):
        """
    Get the cell nodes for the selected column.

    Related Pages:

      https://datatables.net/reference/api/column().nodes()
    """
        return JsQuery.JQuery(selector="%s.nodes().to$()" % self.varId,
                              setVar=False)
Пример #20
0
  def jqThis(self):
    """
    Description:
    -----------
    Interface to the Javascript Object primitive

    :return: The Javascript "this" object
    """
    from epyk.core.js.packages import JsQuery
    return JsQuery.JQuery(self._jsObj._src, selector="jQuery(this)", setVar=False)
Пример #21
0
    def __init__(self, report, components, width, height, options, profile):
        super(Popup, self).__init__(report, [],
                                    css_attrs={
                                        "width": width,
                                        "height": height
                                    },
                                    profile=profile)
        self.__max_height, self.width, self.title = (100, "%"), width, None
        self.__options = OptPanel.OptionPopup(self, options)
        if not isinstance(components, list):
            components = [components]
        for component in components:
            self.__add__(component)
        if self.options.background:
            #self.frameWidth = "%s%s" % (width[0], width[1])
            self.css({
                'width': '100%',
                'position': 'fixed',
                'height': '100%',
                'background-color': 'rgba(0,0,0,0.4)',
                'left': 0,
                'top': 0
            })
            self.css({
                'display': 'none',
                'z-index': '1000',
                'text-align':
                'center',  #'padding-left': self.options.margin, 'padding-right': self.options.margin
            })
        else:
            #self.frameWidth = "100%"
            self.css({
                'position': 'absolute',
                'margin': 0,
                'padding': 0,
                'display': 'none',
                'z-index': '10000'
            })

        if self.options.draggable:
            self.draggable(source_event=JsQuery.decorate_var(
                self.dom.querySelector("#%s_content" % self.htmlCode)))
        self.set_attrs(name="name", value="report_popup")
        self.keyup.escape(self.dom.hide().r, source_event="document")
        self.window = self._report.ui.div()
        self.window.options.managed = False
        self.window.style.background = "white"
        self.window.style.position = "absolute"
        self.window.style.margin = "auto"
        self.window.style.height = "80%"
        self.window.style.width = "80%"
        self.window.style.top = 0
        self.window.style.bottom = 0
        self.window.style.left = 0
        self.window.style.right = 0
Пример #22
0
    def __str__(self):
        header = [
            "<th style='width:%s%%;%s'>%s</th>" %
            (100 / len(self.labels), Defaults.inline(self.options.header), d)
            for d in self.labels
        ]
        body, row = [], []
        for i, day in enumerate(self.val):
            if 'number' in day:
                total_capacity, tooltip = 0, ["<b>%s</b>" % day['date']]
                for t in day.get("tasks", []):
                    c = t.get("capacity", 0)
                    total_capacity += c
                    tooltip.append("<div>%s: %s%%</div>" % (t['name'], c))
                if total_capacity > 100:
                    day["total_capacity"] = total_capacity
                    day["style"] = Defaults.inline(self.options.overload)
                    numer_day = "<div style='%(style)s' data-html='true' data-toggle='tooltip' title='overload: %(total_capacity)s%%'>%(number)s</div>" % day
                else:
                    day["style"] = Defaults.inline(self.options.number)
                    numer_day = "<div style='%(style)s'>%(number)s</div>" % day
                tasks = "<div>%s</div>" % "".join([
                    "<div style='width:100%%;height:20px;display:block;vertical-align:middle'><div style='background:%(color)s;width:100%%;height:%(capacity)s%%;display:inline-block' title='%(name)s: %(capacity)s%%'></div></div>"
                    % t for t in day.get("tasks", [])
                ])
                cell_style = Defaults.inline(self.options.today)
                if day.get("today", False):
                    row.append(
                        "<td data-placement='right' data-toggle='tooltip' data-html='true' title='<div>%s</div>' style='%s;background:%s'>%s%s</td>"
                        % ("".join(tooltip), cell_style,
                           self._report.theme.success[0], numer_day, tasks))
                else:
                    row.append(
                        "<td data-placement='right' data-toggle='tooltip' data-html='true' title='<div>%s</div>' style='%s'>%s%s</td>"
                        % ("".join(tooltip), cell_style, numer_day, tasks))
            else:
                row.append("<td style='padding:0'></td>")
            if i % len(self.labels) == 0:
                body.append("<tr>%s</tr>" % "".join(row))
                row = []
        if row:
            for i in range(7 - len(row)):
                row.append("<td style='padding:0'></td>")
            body.append("<tr>%s</tr>" % "".join(row))

        self._report._props['js']['onReady'].add(
            "%s.tooltip()" %
            JsQuery.decorate_var("'[data-toggle=tooltip]'", convert_var=False))
        return '<table %(strAttr)s><caption style="text-align:right">%(caption)s</caption><tr>%(header)s</tr>%(content)s</table>' % {
            'strAttr': self.get_attrs(pyClassNames=self.style.get_classes()),
            'caption': self.caption,
            'header': "".join(header),
            'content': "".join(body)
        }
Пример #23
0
  def jquery_ui(self):
    """
    Description:
    -----------
    Wrapper to the JqueryUI component

    :rtype: JsQueryUi.JQueryUI
    """
    if self._jquery_ui is None:
      self._jquery_ui = JsQueryUi.JQueryUI(self._src, selector=JsQuery.decorate_var("#%s" % self._src.htmlCode), setVar=False)
    return self._jquery_ui
Пример #24
0
    def jquery_ui(self) -> JsQueryUi.JQueryUI:
        """
    Description:
    ------------

    :rtype: JsQueryUi.JQueryUI
    """
        if self._jquery_ui is None:
            self._jquery_ui = JsQueryUi.JQueryUI(
                self.component,
                selector=JsQuery.decorate_var("#%s" % self.component.htmlCode))
        return self._jquery_ui
Пример #25
0
    def jqThis(self):
        """
    Description:
    -----------
    Interface to the Javascript Object primitive.

    :return: The Javascript "this" object
    """
        from epyk.core.js.packages import JsQuery
        return JsQuery.JQuery(component=self.component,
                              page=self.page,
                              selector="jQuery(this)",
                              set_var=False)
Пример #26
0
    def jquery_nodes(self):
        """
    Get the cell nodes for the selected column.

    Related Pages:

      https://datatables.net/reference/api/column().nodes()

    :return:
    """
        self.nodes()
        self._js.append("to$()")
        return JsQuery.JQuery(jqId=self.toStr())
Пример #27
0
    def container_jquery(self):
        """
    Get the div container node for the table in the API's context.

    Related Pages:

      https://datatables.net/reference/api/table().container()
    """
        return JsQuery.JQuery(self.src,
                              selector="jQuery(%s.table().container())" %
                              self.varId,
                              setVar=False,
                              parent=self._parent)
Пример #28
0
    def jquery_node(self):
        """
    Description:
    -----------
    Get the cell nodes for the selected column.

    Related Pages:

      https://datatables.net/reference/api/column().nodes()
    """
        return JsQuery.JQuery(component=self.component,
                              selector="%s.nodes().to$()" % self.varId,
                              set_var=False)
Пример #29
0
 def _js__builder__(self):
     return '''
   jHtmlObj = %(jquery)s; jHtmlObj.empty();
   if (typeof options.currPage == 'undefined'){options.currPage = 0}; var pageNumber = options.pageNumber;
   data.slice(options.currPage * pageNumber).forEach( function(rec){
     var newItem = $('<div style="margin:5px 10px 5px 10px;"></div>') ; 
     var title = $('<div>'+ rec['title'] + '</div>').css( options.title );
     if (rec['urlTitle'] != undefined){
       title.css({'cursor': 'pointer'}); title.click(function(e){window.open(rec['urlTitle'], '_blank')})}
     newItem.append(title);
     if (rec.icon != undefined){
       var item = $('<div></div>').css(options.url);
       item.append( $('<i class="'+ rec['icon'] +'" style="margin-right:5px"></i>')).append(rec['url']);
       newItem.append(item)} 
     else if(rec.url != undefined) {newItem.append($('<div>'+ rec['url'] +'</div>').css(options.url))}
     newItem.append( $('<div>'+ rec['dsc'] +'</div>').css(options.dsc));
     if(rec.visited != undefined){newItem.append($('<div>'+ rec.visited +'</div>').css(options.visited))}
     if(rec.links != undefined){
       rec.links.forEach(function(link){ 
         if (link.url == undefined) {link.url = link.val};
         newItem.append($('<a href='+ link.url +' target="_blank">'+ link.val +'</a><br>').css(options.link))})};
     jHtmlObj.append(newItem);
   }); 
   if(data.length > 0) {
     var reste = data.length/ pageNumber; var currIndex = options.currPage+1; var roundRest = Math.trunc(reste);
     if (roundRest > reste) {reste ++};
     var paginate = $('<div style="display:inline-block;height:35px;padding:0;width:100%%;text-align:center;margin-top:10px" class="py_cssdivpagination"></div>');
     if (currIndex > 1){
       var href = $('<a href="#">&laquo;</a>');
       href.click({page: options.currPage-1, rec: data}, function(e){%(class)s(htmlObj, e.data.rec, options, e.data.page)});
       paginate.append(href)};
     for (var i = 0; i < reste; i++){
       var indexPage = i + 1;
       if (options.currPage == i) { 
         var href = $('<a href="#" style="background-color:'+ options.greyColor +';padding:5px;color:'+ options.whiteColor +'">'+ indexPage +'</a>');
         href.click({page: i, rec: data}, function(e) { %(class)s(htmlObj, e.data.rec, options, e.data.page)});
         paginate.append(href)}
       else{
         var href = $('<a href="#" style="padding:5px;">'+ indexPage +'</a>') ;
         href.click({page: i, rec: data}, function(e){%(class)s(htmlObj, e.data.rec, options, e.data.page)});
         paginate.append(href)}}
     if(currIndex < reste){
       var href = $('<a href="#">&raquo;</a>');
       href.click({page: options.currPage+1, rec: data}, function(e){%(class)s(htmlObj, e.data.rec, options, e.data.page)});
       paginate.append(href)};
     jHtmlObj.append(paginate)
   } ''' % {
         "class": self.__class__.__name__,
         'jquery': JsQuery.decorate_var("htmlObj", convert_var=False)
     }
Пример #30
0
    def container_jquery(self):
        """
    Description:
    -----------
    Get the div container node for the table in the API's context.

    Related Pages:

      https://datatables.net/reference/api/table().container()
    """
        return JsQuery.JQuery(component=self.component,
                              selector="jQuery(%s.table().container())" %
                              self.varId,
                              set_var=False)