Esempio n. 1
0
File: Data.py Progetto: ylwb/epyk-ui
    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)
Esempio n. 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
Esempio n. 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
Esempio n. 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
Esempio n. 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
Esempio n. 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
Esempio n. 7
0
    def from_get(self, url, data=None, code=None):
        """
    Description:
    -----------

    """
        return JsQuery.JQuery(self.page).get(url, data)
Esempio n. 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
Esempio n. 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())
Esempio n. 10
0
 def var(self):
     """
 Description:
 -----------
 Return the calendar javaScript object reference after the builder.
 """
     return JsQuery.decorate_var("#%s" % self.htmlCode)
Esempio n. 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)
     }
Esempio n. 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)
    }
Esempio n. 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)}
Esempio n. 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
Esempio n. 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
Esempio n. 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
Esempio n. 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)}
Esempio n. 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)
Esempio n. 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)
Esempio n. 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)
Esempio n. 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
Esempio n. 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)
        }
Esempio n. 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
Esempio n. 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
Esempio n. 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)
Esempio n. 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())
Esempio n. 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)
Esempio n. 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)
Esempio n. 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)
     }
Esempio n. 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)