async def result(self, msg):
    if float(fee_inbox.value) == 0:
        fee_inbox.set_classes('bg-red-700 font-bold text-white')
    else:
        fee_inbox.set_classes(inbox_style)

    result_display.delete_components()
    dates_non_overlap(self, msg)
    jor = str(fee_inbox.value)
    factor_mult_extras = float((factor_mult_extras_inbox.value / 100) + 1)
    r = jp.P(text=operations_ctotal(
        jor, factor_mult_extras,
        operations_tiempos(start_workday_inbox.value, end_workday_inbox.value,
                           hs_por_jornada_inbox.value, night_check.checked)[2],
        hs_por_jornada_inbox.value))
    result.output = r.text
    result.val_hs_extras = operations_ctotal.__getattribute__("val_hs_extras")
    result.hs_ext_trabajadas = operations_ctotal.__getattribute__(
        "hs_ext_trabajadas")
    result.ganancia_por_hs_extras = operations_ctotal.__getattribute__(
        "ganancia_por_hs_extras")
    result_int_part = str(r.text).rsplit(".")[0]
    result_display_decimal_part = str(r.text).rsplit(".")[1]
    rd = jp.Div(
        a=result_display, classes='flex py-2'
    )  # 'flex-col m-2 flex-shrink-0  flex-row  content-start align-top inline-block  text-align-right '
    rd.add(jp.Div(text=result_int_part, classes='text-2xl'), jp.P(text='.'),
           jp.Div(text=result_display_decimal_part, classes='text-ms'))
    info_area_fn(self, msg)
    await rd.update()
Example #2
0
    def load_images(mode=1, pattern=''):
        wp.all_image_containers = []
        small_img = ''
        for i in range(len(wp.small_images)):
            small_img_container = jp.Div(a=images_container, classes=small_img_container_classes,
                                         click=select_default_img, mouseenter=small_container_mouseenter,
                                         mouseleave=small_container_mouseleave, )
            if mode == 1:
                small_img = jp.Img(src=f'/static/{wp.small_images[i]}', a=small_img_container, style=small_img_style, )
            elif mode == 2:
                if pattern:
                    filename_text = basename(wp.small_images[i]).replace(pattern, '')
                    filename_text = filename_text.replace(filename_text[filename_text.find('.'):], '')
                    small_img = jp.P(src=f'/static/{wp.small_images[i]}', a=small_img_container,
                                     text=filename_text)
                else:
                    small_img = jp.P(src=f'/static/{wp.small_images[i]}', a=small_img_container,
                                     text=basename(wp.small_images[i]))
            small_img_container.child = small_img
            wp.all_image_containers.append(small_img_container)

        wp.main_img.style = main_img_style
        wp.main_img.style += 'position: absolute;'

        wp.all_image_containers[0].set_class('bg-red-700')
        main_img.show = True
Example #3
0
def player_div_banner(stat, dict, div, classes):
    if stat == 'Food':
        value = len(dict[stat])
    else:
        value = dict[stat]
    new_div = jp.Div(a=div, classes=classes)
    new_div.label = jp.P(text=f'{stat}: ',
                         a=new_div,
                         classes=classes + "justify-self-center inline-block ")
    new_div.value = jp.P(text=f'{value}',
                         a=new_div,
                         classes=classes + "justify-self-center inline-block ")
    return new_div
def radio_test():
    wp = jp.WebPage()
    genders = ["male", "female", "other"]
    ages = [(0, 30), (31, 60), (61, 100)]

    outer_div = jp.Div(classes="border m-2 p-2 w-64", a=wp)
    # Create div to show radio button selection but don't add yet to page. It will be added at the end
    # It is created here so that it could be assigned to the radio button attribute result_div
    result_div = jp.Div(
        text="Click radio buttons to see results here", classes="m-2 p-2 text-xl"
    )

    jp.P(a=outer_div, text="Please select your gender:")
    gender_list = []
    for gender in genders:
        label = jp.Label(classes="inline-block mg-1 p-1", a=outer_div)
        radio_btn = jp.Input(
            type="radio",
            name="gender",
            value=gender,
            a=label,
            btn_list=gender_list,
            result_div=result_div,
            change=radio_changed,
        )
        gender_list.append(radio_btn)
        jp.Span(classes="ml-1", a=label, text=gender.capitalize())

    jp.Div(a=outer_div, classes="m-2")  # Add spacing and line break

    jp.P(a=outer_div, text="Please select your age:")
    age_list = []
    for age in ages:
        label = jp.Label(classes="inline-block mb-1 p-1", a=outer_div)
        radio_btn = jp.Input(
            type="radio",
            name="age",
            value=age[0],
            a=label,
            btn_list=age_list,
            result_div=result_div,
            change=radio_changed,
        )
        age_list.append(radio_btn)
        jp.Span(classes="ml-1", a=label, text=f"{age[0]} - {age[1]}")
        jp.Br(a=outer_div)

    wp.add(result_div)
    return wp
Example #5
0
async def main_screen():
    main = jp.WebPage(websockets=False)
    main += title
    main += subtitle
    def pdf_input(self,msg):
        print("event")
        sesspath = msg.session_id
        print(msg.session_id)
        if not os.path.isdir(sesspath):
            os.mkdir(sesspath)
        print(f"path made for {msg.session_id}")
        for i,v in enumerate(msg.form_data.files):
            print("getting file "+str(i))
            with open(f'{sesspath}/{v.name}','wb') as f:
                f.write(base64.b64decode(v.file_content))
        file_list = os.listdir(sesspath)
        print(f"> got {file_list}")
        if file_list:
            session_data[msg.session_id] = file_list
            msg.page.redirect = 'text_confirm'
            print(f"> got {file_list}")
    jp.P(text="Upload a pdf to get started",a=main,classes='w-full flex-none text-sm')
    form = jp.Form(a=main,enctype='multipart/form-data',submit=pdf_input)
    jp.Input(type='file',classes=jp.Styles.input_classes,a=form,accept='application/pdf',multiple=True)
    jp.Button(type='submit',text='Upload',classes=jp.Styles.button_simple,a=form)
    return main
Example #6
0
def hello_world():
    wp = jp.WebPage()
    for i in range(1,11):
        jp.P(
                text=f'{i}) Hello world!',
                a =wp, style=f'font-size: {10*i}px')
    return wp
Example #7
0
async def launch(request):
    wp = jp.WebPage()
    url = ''
    print(APP_ID)
    if len(request.query_params) > 0:
        login_hint = request.query_params['login_hint']
        lti_message_hint = request.query_params['lti_message_hint']
        target_link_uri = request.query_params['target_link_uri']

        r = requests.get(f"{BACKEND_URL}launch", params=request.query_params)
        wp.add(jp.P(text=f"{r.text}"))
        
    else:
        wp.add(jp.P(text="NO QUERY PARAMS"))

    return wp
Example #8
0
 def foo(self, msg):
     msg.page.content.delete_components()
     jp.QBtn(text="back to main", click=index, a=msg.page.content)
     for n in range(0, 155):
         msg.page.content.add(
             jp.P(
                 text="Lorem ipsum dolor sit amet consectetur adipisicing elit. Fugit nihil praesentium molestias a adipisci, dolore vitae odit, quidem consequatur optio voluptates asperiores pariatur eos numquam rerum delectus commodi perferendis voluptate?"
             )
         )
Example #9
0
def event_demo():
    wp = jp.WebPage()
    wp.title = 'event demo'
    wp.favicon = './favicon.ico'
    d = jp.P(text='Not clicked yet',
             a=wp,
             classes='text-xl m-2 p-2 bg-blue-500 text-white')
    d.on('click', my_click)
    return wp
Example #10
0
def hello_world():
    wp = jp.WebPage()
    for i in range(1, 11):
        jp.P(text=f'{i}) Hello World!', a=wp, style=f'font-size: {10*i}px')

    d = jp.Div(text='Hello world!')
    d.on('click', my_click)
    wp.add(d)
    print(1)
    return wp
Example #11
0
def button_click(self, msg):
    self.num_clicked += 1
    # self.message.text = f'{self.text} clicked. Number of clicks: {self.num_clicked}'
    p = jp.P(text=f'{self.text} clicked. Number of clicks: {self.num_clicked}')
    self.message.add_component(p, 0)
    for button in msg.page.button_list:
        button.set_class('bg-blue-500')
        button.set_class('bg-blue-700', 'hover')
    self.set_class('bg-red-500')
    self.set_class('bg-red-700', 'hover')
Example #12
0
async def page():
    wp = jp.WebPage()
    wp.head_html = "<link href='https://afeld.github.io/emoji-css/emoji.css' rel='stylesheet'></link>"
    root = jp.Div(a=wp)
    body = jp.Div(
        classes='bg-gray-400 font-sans leading-normal tracking-normal', a=root)
    c2 = jp.Nav(classes='bg-gray-800 p-2 mt-0 w-full', a=body)
    c3 = jp.Div(
        classes='container mx-auto flex flex-wrap items-center', a=c2)
    c4 = jp.Div(
        classes='flex w-full md:w-1/2 justify-center md:justify-start text-white font-extrabold', a=c3)
    logo_link = jp.A(
        classes='text-white no-underline hover:text-white hover:no-underline', href='#', a=c4)
    logo_cont = jp.Span(classes='flex text-2xl pl-2', a=logo_link)
    logo = jp.I(classes='em em-email my-auto', a=logo_cont)
    title = jp.Div(classes="p-2", text="Spam Detector", a=logo_cont)
    cont_main = jp.Div(
        classes='container mx-auto flex flex-col md:flex-row items-center my-6 md:my-12', a=body)
    cont_left = jp.Div(
        classes='flex flex-col w-full lg:w-1/2 justify-center items-start pt-12 pb-24 px-6', a=cont_main)
    tagline = jp.P(classes='uppercase tracking-loose',
                   a=cont_left, text='Version: 1.0')
    main_title = jp.H1(classes='font-bold text-3xl my-4',
                       a=cont_left, text='Spam Detector')
    description = jp.P(classes='leading-normal mb-4', a=cont_left,
                       text='Keep the bad guys out! Enter the text of your email below and the Spam Detector will tell you how likely it\'s contents is spam:')
    text_in = jp.Textarea(classes='w-full border-2 h-32',
                          placeholder='Please type here', a=cont_left)
    text_in.div = jp.Div(a=cont_left)
    text_in.on('input', predict)
    cont_right = jp.Div(
        classes='w-full lg:w-1/2 lg:py-6 text-center', a=cont_main)
    mailbox = jp.I(
        classes='text-6xl w-3/5 mx-auto em-svg em-mailbox_with_mail', viewBox='0 0 20 20', a=cont_right)
    footer = jp.Div(classes='bg-white h-1', a=body)
    footer_cont = jp.Div(
        classes='container mx-auto pt-12 md:pt-6 px-6', a=footer)
    footer_text_cont = jp.P(classes='py-4', a=footer_cont)
    love = jp.I(classes='em em-hearts', a=footer_text_cont)
    data = jp.I(classes='em em-bar_chart', a=footer_text_cont)
    science = jp.I(classes='em em-test_tube', a=footer_text_cont)

    return wp
def html_comps_editable_field():
    wp = jp.WebPage()
    for _ in range(10):
        p = jp.P(
            text=f"אני אוהב לתכנת בפייתון",
            a=wp,
            contenteditable=True,
            classes="text-white bg-blue-500 hover:bg-blue-700 ml-1 p-1 w-1/2",
        )
        p.dir = "rtl"
        p.lang = "he"
    return wp
Example #14
0
async def text_confirm(request):
    sid = request.session_id
    sesspath = "/static/"+sid
    file_list = session_data[sid]
    texts = [tf.loadtext(f'{sesspath}/{f}',sesspath) for f in file_list]
    tc = jp.WebPage()
    tc += title
    jp.P(text="For each file, pick a version to turn into speech", classes=subtitle_style)
    form = jp.Form(a=tc,classes='border m-1 p-1 w-64')
    labels = [[] for txt in texts]
    for textz,f,ls in zip(texts,file_list,labels):
        ts = jp.Div(text=f,a=form,classes="grid grid-flow-col auto-cols-max md:auto-cols-min")
        for txt in textz:
            if txt is not None:
                l = jp.Label(a=ts,classes=input_class)
                jp.P(text=txt,a=l,classes=p_class)
                jp.Input(a=l,type='radio')
                ls += l
    confirm_button = jp.Input(value='Confirm', type='submit',a=form,classes='border m-2 p-2')
    def confirm(self,msg):
        print(msg)
    form.on('submit',confirm)
async def web_ui(self):
    wp = jp.WebPage()
    wp.title = 'Calcuador de jornada de Filmación'
    wp.favicon = "/CucardaVFXsup_fdoNegro.png"

    main_div = jp.Div(
        a=wp,
        classes=
        'bg-black py-2 px-2 rounded-lg shadow-xl lg:max-w-3xl  sm:max-w-2xl  container min-width transform lg:scale-100 sm:scale-150 origin-top-left'
    )  # overflow-auto flex   content-center flex-shrink-0 m-auto max-w-xl text-base sm:text-4xl lg:text-base
    main_div.add(head_div)
    app_box = jp.Div(
        a=main_div,
        classes='flex-col text-white content-center m-2 flex-grow '
    )  # flex-shrink-0
    d1_organizer = jp.Div(a=app_box, classes='flex border-gray-900 border-2')
    labels_for_data = jp.Div(a=d1_organizer,
                             classes='text-align-left ' + cell_style)
    data_input_column = jp.Div(a=d1_organizer, classes=cell_style)
    labels_for_data.add(fee_label, factor_mult_extras_label,
                        start_workday_label, end_workday_label,
                        hs_por_jornada_label, night_hs_label)
    data_input_column.add(fee_inbox, factor_mult_extras_inbox,
                          start_workday_inbox, end_workday_inbox,
                          hs_por_jornada_inbox, night_check)

    pre_info_area = jp.Div(a=app_box, classes='py-2 flex flex-no-wrap')  #

    result_box = jp.Div(a=app_box, classes='flex content-start')  #
    btn_div = jp.Div(a=result_box)
    jp.P(text='Cobrarás en Total =  ', a=result_box, classes='m-4')
    result_box.add(jp.Space(num=2), result_display)
    calc_bton = jp.Button(
        text='Calcular Total',
        name='Calcular Total',
        a=btn_div,
        click=result,
        classes=boton_style
    )  # TO-DO activar la funcionalidad del horario nocturno cuando se checkee.
    pre_info_area.add(info_area)

    end_workday_inbox.on('change', dates_non_overlap)
    fee_inbox.on('change', result)
    # calc_bton.on('before', info_area_fn)
    info_link.on('mouseover', change)
    info_link.on('mouseleave', change)
    night_check.on('change', result)

    return wp
def link_demo_bookmark():
    wp = jp.WebPage()
    link = jp.A(
        text="Scroll to target",
        a=wp,
        classes="inline-block m-2 p-2 text-xl text-white bg-blue-500 hover:bg-blue-700",
    )
    # jp.Br(a=wp)
    for i in range(50):
        jp.P(text=f"{i+1} Not a target", classes="m-1 p-1 text-white bg-blue-300", a=wp)
    target = jp.Link(
        text=f"This is the target - it is linked to first link, click to jump there",
        classes="inline-block m-1 p-1 text-white bg-red-500",
        a=wp,
    )
    link.bookmark = target
    link.scroll = True
    target.bookmark = link
    target.scroll = True
    for i in range(50):
        jp.P(
            text=f"{i+50} Not a target", classes="m-1 p-1 text-white bg-blue-300", a=wp
        )
    return wp
Example #17
0
def event_demo():
    number_of_buttons = 25
    wp = jp.WebPage()
    button_div = jp.Div(classes='flex m-4 flex-wrap', a=wp)
    button_classes = 'w-32 mr-2 mb-2 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-full'
    message = jp.Div(classes='text-lg border m-2 p-2 overflow-auto h-64', a=wp)
    message.add(jp.P(text='No button clicked yet'))
    button_list = []
    for i in range(1, number_of_buttons + 1):
        b = jp.Button(text=f'Button {i}', a=button_div, classes=button_classes, click=button_click)
        b.message = message
        b.num_clicked = 0
        button_list.append(b)
    wp.button_list = button_list   # The list will now be referenced by the WebPage instance attribute
    return wp
                  delete_flag=False)
logolink = jp.A(href='http://vfx-sup.com', target='_blank')  #
logo = jp.Img(a=logolink,
              src=logo_url,
              classes="m-2 box-border object-left object-contain h-10"
              )  #TO-DO agregar link y un about a la main page .
info_link_box = jp.Div(classes='justify-end')
info_link = jp.A(
    a=info_link_box,
    text='Info adicional',
    href='http://vfx-sup.com',
    title='Información del autor y de uso',
    classes=
    'text-gray-800 align-middle text-xs text-right font-style: italic justify-end px-8'
)  # , target='_blank' invisible bg-gray-900 border-2 border-gray-700
title_to_show = jp.P(text="Calculador de jornadas de filmación",
                     classes='m-4 text-xl font-bold text-white overflow-auto')
result_display = jp.Div(
    name='result_display', classes='font-bold '
)  # 'flex-col m-2 flex-shrink-0  align-top inline-block  text-align-right flex-row'
espacios = jp.Space(num=3)

## input elements
fee_inbox = jp.Input(
    name="fee_in",
    type='number',
    title=
    'Indique el costo por jornada acordado en el convernio colectivo o en el contrato\nNo utilizar decimales ni fracciones!',
    placeholder='honorarios',
    tabindex=1,
    classes=inbox_style,
    delete_flag=False)  #
Example #19
0
    return Synthesizer(model_path, config_path, vocoder_path, vocoder_config_path, use_cuda)

def tts(synth, text, out_name):
    wav = synth.tts(text)
    syth.save_wav(wav,out_name+'.wav')
    AudioSegment.from_wav(out_name+'.wav').export(out_name+'.mp3',format="mp3")
    os.remove(out_name+'.wav')

session_data = {}


title_style = "flex-auto text-xl font-semibold items-center"
subtitle_style = "w-full flex-none text-sm font-medium items-center"

title = jp.H1(text = "PDF to Speech", classes=title_style)
subtitle = jp.P(text = "A deep learning powered pipeline", classes=subtitle_style)
input_class = "m-2 bg-gray-200 border-2 border-gray-200 rounded w-64 py-2 px-4 text-gray-700 focus:outline-none focus:bg-white focus:border-purple-500"
p_class = 'm-2 p-2 h-32 text-xl border-2'

async def main_screen():
    main = jp.WebPage(websockets=False)
    main += title
    main += subtitle
    def pdf_input(self,msg):
        print("event")
        sesspath = msg.session_id
        print(msg.session_id)
        if not os.path.isdir(sesspath):
            os.mkdir(sesspath)
        print(f"path made for {msg.session_id}")
        for i,v in enumerate(msg.form_data.files):
Example #20
0
chnames = [
    'Slot', 'IB0P', 'IB1P', 'IB2P', 'IB3p', 'IB4P', 'IB5P', 'IB6P', 'IB7P',
    'IB0N', 'IB1N', 'IB2N', 'IB3N', 'IB4N', 'IB5N', 'IB6N', 'IB7N'
]

wp = jp.WebPage(delete_flag=False)
wp.title = 'EMCAL LV'

header_div = jp.Div(
    text='EMCAL LV Burnin',
    a=wp,
    classes='text-5xl text-white bg-blue-500 hover:bg-blue-700 m-1')
time_div = jp.Div(
    a=wp, classes='text-1xl text-white bg-blue-500 hover:bg-blue-700 m-1')
the_time = jp.P(a=time_div)
on_button_div = jp.Div(a=wp)
off_button_div = jp.Div(a=wp)
button_classes = 'w-32 mr-2 mb-2 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-full'

for i in range(nslots):
    b = jp.Button(text=f'ON {i+1}',
                  a=on_button_div,
                  classes=button_classes,
                  click=button_click)
    b.slot = i + 1
    b.onoff = 1

for i in range(nslots):
    b = jp.Button(text=f'OFF {i+1}',
                  a=off_button_div,
Example #21
0
def index():
    wp = jp.QuasarPage()
    wp.tailwind = True
    wp.add(MyToolbar())
    wp.add(jp.P(text='Index page', classes='text-5xl m-2'))
    return wp
Example #22
0
def bye_function():
    wp = jp.WebPage()
    wp.add(jp.P(text="Goodbye!", classes="text-5xl m-2"))
    return wp
Example #23
0
def photo_browser():
    all_container_classes = 'm-1 p-4'
    small_img_container_classes = 'm-1 p-1 bg-gray-700'
    default_combobox_classes = 'block bg-gray-200 border border-gray-200 text-gray-700 ' \
                               'py-3 px-4 pr-8 rounded leading-tight focus:outline-none ' \
                               'focus:bg-white focus:border-gray-500 w-full'
    settings_button_classes = 'm-2 p-2'
    dropdown_menu_classes = 'm-2 p-2 bg-gray-400'
    settings_div_classes = 'w-full'
    input_classes = "bg-gray-200 border border-gray-200 rounded py-3 px-4 pr-8 text-gray-700 " \
                    "focus:outline-none focus:bg-white focus:border-purple-500 w-full"

    main_container_style = 'position: absolute; top: 500px; width: 100%; margin: 0;'
    images_container_style = 'display:flex; justify-content:center; flex-wrap: wrap;'
    main_img_style = 'width: 800px; display: block; margin-left: auto; margin-right: auto;' \
                     'z-index: 2; left: 0; right: 0; margin: 2% auto;'
    small_img_style = 'width: 200px;'
    settings_button_style = 'position: absolute;'
    dropdown_menu_style = 'position: absolute; top: 55px; z-index: 3;'
    settings_div_style = 'position: absolute;'

    def small_container_mouseenter(self, msg):
        msg.page.main_img.src = self.child.src
        self.child.style += ' transform: scale(.85);'

    def small_container_mouseleave(self, msg):
        if not isinstance(self.child, jp.P):
            self.child.style = small_img_style
        else:
            self.child.style = ''
        msg.page.main_img.src = msg.page.main_img_src

    def select_default_img(self, msg):
        msg.page.main_img_src = self.child.src
        for img_cont in msg.page.all_image_containers:
            img_cont.set_class('bg-gray-700')
        self.set_class('bg-red-700')

    def change_images(self, msg):
        msg.page.images_container.delete_components()
        msg.page.small_images = glob(self.value + '*.*')
        msg.page.small_images = natsorted(msg.page.small_images)
        msg.page.main_img.src = 'static/' + msg.page.small_images[0]
        msg.page.main_img_src = msg.page.main_img.src
        msg.page.other_settings_container.show = True

        if msg.page.small_images_content_display_combobox.value == "text":
            if msg.page.pattern_recognize_checkbox.checked and msg.page.pattern_recognize_input.value:
                load_images(mode=2, pattern=msg.page.pattern_recognize_input.value)
            else:
                load_images(mode=2)
        else:
            load_images()

        if msg.page.main_img_position_checkbox.checked:
            msg.page.main_img.style = main_img_style
            msg.page.main_img.style += ' position: fixed;'

    def toggle_show(self, msg):
        self.dropdown_menu.show = not self.dropdown_menu.show

    def set_main_img_position(self, msg):
        msg.page.main_img.style = main_img_style
        if self.checked:
            msg.page.main_img.style += ' position: fixed;'
        else:
            msg.page.main_img.style += ' position: absolute;'

    def change_small_images_content_display(self, msg):
        msg.page.images_container.delete_components()
        if self.value == "photo":
            load_images(mode=1)
        elif self.value == "text":
            load_images(mode=2)

    def set_pattern_recognize(self, msg):
        msg.page.pattern_recognize_input.show = not msg.page.pattern_recognize_input.show
        msg.page.pattern_refresh_button.show = not msg.page.pattern_refresh_button.show
        msg.page.pattern_recognize_input.value = ''
        pattern_refresh(self, msg)

    def pattern_refresh(self, msg):
        msg.page.images_container.delete_components()
        if wp.small_images_content_display_combobox.value == "text":
            load_images(mode=2, pattern=msg.page.pattern_recognize_input.value)
        else:
            load_images(mode=1)

    wp = jp.WebPage()
    wp.body_classes = 'bg-gray-600'

    small_images_folders = glob('photos/*/')

    try:
        wp.small_images = glob(small_images_folders[0] + '*.*')
        wp.small_images = natsorted(wp.small_images)
        main_img_src = 'static/' + wp.small_images[0]
    except IndexError:
        jp.P(text='Directory photos/ is empty', a=wp, classes='text-5xl m-2 p-2')
        return wp

    main_img = jp.Img(src='', a=wp, style=main_img_style)
    main_img.show = False

    main_container = jp.Div(a=wp, style=main_container_style)

    settings_div = jp.Div(a=wp, style=settings_div_style, classes=settings_div_classes)

    dropdown_menu = jp.Div(a=settings_div, classes=dropdown_menu_classes, style=dropdown_menu_style)

    images_dir_location_combobox_container = jp.Div(a=dropdown_menu)

    jp.Label(a=images_dir_location_combobox_container, text='Dir for image src*')
    images_dir_location_combobox = jp.Select(a=images_dir_location_combobox_container, classes=default_combobox_classes)

    other_settings_container = jp.Div(a=dropdown_menu)
    other_settings_container.show = False

    jp.Label(a=other_settings_container, text='Main img pos fixed?')
    main_img_position_checkbox = jp.Input(a=other_settings_container, type='checkbox', classes='m-1 form-checkbox')
    main_img_position_checkbox.on("change", set_main_img_position)

    jp.Br(a=other_settings_container)

    jp.Label(a=other_settings_container, text='Small images content display')
    small_images_content_display_combobox = jp.Select(a=other_settings_container, classes=default_combobox_classes)
    jp.Option(a=small_images_content_display_combobox, value="photo", text='Photo')
    jp.Option(a=small_images_content_display_combobox, value="text", text='Image name')
    small_images_content_display_combobox.on('change', change_small_images_content_display)
    small_images_content_display_combobox.value = "photo"

    jp.Label(a=other_settings_container, text="Pattern recognize?")
    pattern_recognize_checkbox = jp.Input(a=other_settings_container, type='checkbox', classes='m-1 form-checkbox')
    pattern_recognize_checkbox.on("change", set_pattern_recognize)

    pattern_refresh_button = jp.Button(a=other_settings_container)
    jp.I(a=pattern_refresh_button, classes='fas fa-sync')
    pattern_refresh_button.on('click', pattern_refresh)
    pattern_refresh_button.show = False

    jp.Br(a=other_settings_container)

    pattern_recognize_input = jp.Input(a=other_settings_container, classes=input_classes, placeholder='Type pattern '
                                                                                                      'here')
    pattern_recognize_input.show = False
    pattern_refresh_button.pattern_recognize_input = pattern_recognize_input

    settings_button = jp.Button(a=settings_div, classes=settings_button_classes, style=settings_button_style)
    settings_button.dropdown_menu = dropdown_menu
    jp.I(a=settings_button, classes='fas fa-cogs fa-2x')
    settings_button.on('click', toggle_show)

    for image_folder in small_images_folders:
        jp.Option(value=image_folder, text=image_folder, a=images_dir_location_combobox)

    images_dir_location_combobox.on('change', change_images)

    images_container = jp.Div(a=main_container, classes='m-1', style=images_container_style)

    wp.main_img = main_img
    wp.main_img_src = main_img_src
    wp.images_container = images_container
    wp.pattern_recognize_input = pattern_recognize_input
    wp.pattern_refresh_button = pattern_refresh_button
    wp.small_images_content_display_combobox = small_images_content_display_combobox
    wp.pattern_recognize_checkbox = pattern_recognize_checkbox
    wp.main_img_position_checkbox = main_img_position_checkbox
    wp.other_settings_container = other_settings_container

    def load_images(mode=1, pattern=''):
        wp.all_image_containers = []
        small_img = ''
        for i in range(len(wp.small_images)):
            small_img_container = jp.Div(a=images_container, classes=small_img_container_classes,
                                         click=select_default_img, mouseenter=small_container_mouseenter,
                                         mouseleave=small_container_mouseleave, )
            if mode == 1:
                small_img = jp.Img(src=f'/static/{wp.small_images[i]}', a=small_img_container, style=small_img_style, )
            elif mode == 2:
                if pattern:
                    filename_text = basename(wp.small_images[i]).replace(pattern, '')
                    filename_text = filename_text.replace(filename_text[filename_text.find('.'):], '')
                    small_img = jp.P(src=f'/static/{wp.small_images[i]}', a=small_img_container,
                                     text=filename_text)
                else:
                    small_img = jp.P(src=f'/static/{wp.small_images[i]}', a=small_img_container,
                                     text=basename(wp.small_images[i]))
            small_img_container.child = small_img
            wp.all_image_containers.append(small_img_container)

        wp.main_img.style = main_img_style
        wp.main_img.style += 'position: absolute;'

        wp.all_image_containers[0].set_class('bg-red-700')
        main_img.show = True

    # load_images()  # uncomment it if you want to image load automatically

    return wp
Example #24
0
def hello_function():
    wp = jp.WebPage()
    wp.add(jp.P(text='Hello there!', classes='text-5xl m-2'))
    return wp
Example #25
0
def bye_function():
    wp = jp.WebPage()
    wp.add(jp.P(text='Goodbye!', classes='text-5xl m-2'))
    return wp
Example #26
0
def about():
    wp = jp.QuasarPage()
    wp.tailwind = True
    wp.add(MyToolbar())
    wp.add(jp.P(text='Hello there!', classes='text-5xl m-2'))
    return wp
Example #27
0
 def list_movies(self):

    # genera la lista dei film del genere scelto
    def view_genre(self, msg):
         conn = sqlite3.connect('movies.db')
         c = conn.cursor()
         genre = (self.text,)
         for row in c.execute('SELECT * FROM films WHERE genre=?', genre):
             li.text = f'Genere selezionato: {self.text}'
             body_table = jp.Tbody(style='overflow:auto;', a=movie_table)
             row_table = jp.Tr(style='')
             div_table1 = jp.Td(style='width: 447px;', a=row_table)
             div_title_film = jp.Div(style='cursor: pointer;', text=row[0], a=div_table1, click=open_film)
             div_table2 = jp.Td(style='width: 183px;', a=row_table)
             div_director_film = jp.Div(style='cursor: pointer;', text=row[8], a=div_table2, click=open_film)
             div_table3 = jp.Td(style='width: 100px;', a=row_table)
             div_date_film = jp.Div(style='cursor: pointer;', text=row[3], a=div_table3, click=open_film)
             div_title_film.additional_properties = row
             div_director_film.additional_properties = row
             div_date_film.additional_properties = row
             row_table.additional_properties = {'Titolo': row[0], 'Regista': row[8], 'Data di uscita': row[3]}
             body_table.add(row_table)

         conn.commit()

         conn.close()
         button_sort_director.additional_properties = [self.text, 'Regista']
         button_sort_title.additional_properties = [self.text, 'Titolo']
         li2.set_classes('block')
         div1.remove_component(div2)
         movie_table.add(body_table)
         div1.add(div_sort_buttons)
         div1.add(movie_table)

    #genera la lista ordinata in base al titolo
    def sort_by_title(self, msg):
        movie_table.delete_components()
        body_table_title_sorted = jp.Tbody(style='overflow:auto;')
        conn = sqlite3.connect('movies.db')
        c = conn.cursor()
        for row in c.execute('SELECT * FROM films ORDER BY title'):
            if row[7] == self.additional_properties[0]:
                li.text = f'Genere selezionato: {self.additional_properties[0]}'
                row_table = jp.Tr(style='')
                div_table1 = jp.Td(style='width: 447px;', a=row_table)
                div_title_film = jp.Div(style='cursor: pointer;', text=row[0], a=div_table1, click=open_film)
                div_table2 = jp.Td(style='width: 183px;', a=row_table)
                div_director_film = jp.Div(style='cursor: pointer;', text=row[8], a=div_table2, click=open_film)
                div_table3 = jp.Td(style='width: 100px;', a=row_table)
                div_date_film = jp.Div(style='cursor: pointer;', text=row[3], a=div_table3,
                                       click=open_film)
                div_title_film.additional_properties = row
                div_director_film.additional_properties = row
                div_date_film.additional_properties = row
                body_table_title_sorted.add(row_table)
        movie_table.add(body_table_title_sorted)

    #genera la lista ordinata in base al regista
    def sort_by_director(self, msg):
        movie_table.delete_components()
        body_table_sorted = jp.Tbody(style='overflow:auto;')
        conn = sqlite3.connect('movies.db')
        c = conn.cursor()
        for row in c.execute('SELECT * FROM films ORDER BY director'):
            if row[7] == self.additional_properties[0]:
                li.text = f'Genere selezionato: {self.additional_properties[0]}'
                row_table = jp.Tr(style='')
                div_table1 = jp.Td(style='width: 447px;', a=row_table)
                div_title_film = jp.Div(style='cursor: pointer;', text=row[0], a=div_table1, click=open_film)
                div_table2 = jp.Td(style='width: 183px;', a=row_table)
                div_director_film = jp.Div(style='cursor: pointer;', text=row[8], a=div_table2, click=open_film)
                div_table3 = jp.Td(style='width: 100px;', a=row_table)
                div_date_film = jp.Div(style='cursor: pointer;', text=row[3], a=div_table3,
                                       click=open_film)
                div_title_film.additional_properties = row
                div_director_film.additional_properties = row
                div_date_film.additional_properties = row
                body_table_sorted.add(row_table)
        movie_table.add(body_table_sorted)

    #dalla visualizzazione del singolo film, torna alla lista
    def return_to_list(self, msg):
        div_sort_buttons.set_class('block')
        p_title.set_classes('hidden')
        p_director.set_classes('hidden')
        p_date.set_classes('hidden')
        p_gross.set_classes('hidden')
        p_budget.set_classes('hidden')
        p_rating.set_classes('hidden')
        p_distributor.set_classes('hidden')
        p_imdb_rating.set_classes('hidden')
        p_time.set_classes('hidden')
        tasto_indietro_lista_film.set_classes('hidden')
        tasto_indietro.set_classes('block')
        movie_table.set_classes("block")
        li.set_classes('block')
        button_sort_director.on('click', sort_by_director)

    #apre la pagina di visualizzazione di un singolo film
    def open_film(self, msg):
        div_sort_buttons.set_class('hidden')
        tasto_indietro_lista_film.set_classes('block')
        tasto_indietro.set_classes('hidden')
        movie_table.set_classes("hidden")
        li.set_classes("hidden")
        p_title.set_classes('block')
        p_director.set_classes('block')
        p_date.set_classes('block')
        p_gross.set_classes('block')
        p_budget.set_classes('block')
        p_rating.set_classes('block')
        p_distributor.set_classes('block')
        p_imdb_rating.set_classes('block')
        p_time.set_classes('block')
        p_title.text = 'Titolo: ' + self.additional_properties[0]
        p_director.text = 'Regista: ' + self.additional_properties[8]
        p_date.text = 'Data di uscita: ' + self.additional_properties[3]
        p_gross.text = 'Incasso totale: ' + str(self.additional_properties[1])
        p_budget.text = 'Budget: ' + str(self.additional_properties[2])
        p_rating.text = 'Rating: ' + self.additional_properties[4]
        p_distributor.text = 'Distributore: ' + self.additional_properties[6]
        p_imdb_rating.text = 'Punteggio su IMDB: ' + str(self.additional_properties[9])
        if (self.additional_properties[5] != None):
            p_time.text = 'Durata: ' + str(self.additional_properties[5]) + ' minuti'

    # cProfile.run('view_genre')
    profile.runctx('view_genre', None, locals())

    #torna alla selezione del genere
    def remove_genre(self, msg):
          li.text='Benvenuto su MovieDatabase, scegli un genere:'
          div1.add(div2)
          li2.set_classes('hidden')
          movie_table.delete_components()
          div1.remove_component(div_sort_buttons)
          div1.remove_component(movie_table)
          button_sort_director.on('click', sort_by_director)
          body_table.set_classes('block')

    # istanze di classi di JustPy
    wp = jp.WebPage()
    ul = jp.Ul(
        style='margin-bottom: 0px;overflow: hidden;background-color: #C3C3C3;border-top-right-radius:.225rem;border-top-left-radius:.225rem',
        a=wp, classes='shadow-md m-2 p-2')
    li = jp.Li(style='margin-left: 1%;text-decoration: none;float: left;color: black;font-size:20px',
               text='Benvenuto su MovieDatabase, scegli un genere:', a=ul)

    div1 = jp.Div(
        style='overflow:auto;height: 520px;padding:4%;padding-top:0%;margin-top: 0px;background-color: #DCDCDC;border-bottom-right-radius:.225rem;border-bottom-left-radius:.225rem',
        a=wp, classes='shadow-md m-2')

    div2 = jp.Div(style='margin-top:46px; position:absolute', a=div1)
    div_sort_buttons = jp.Div(style='padding-top: 19px;width: 1080px;height: 73px;position:absolute;background-color: #DCDCDC;')
    button_sort_title = jp.Button(a=div_sort_buttons, style='width: 27rem; border-radius: 2px;', classes='mr-2 mb-2 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4', text='Ordina per titolo', click=sort_by_title)
    button_sort_director = jp.Button(a=div_sort_buttons, style='width: 11rem; border-radius: 2px;', classes='w-32 mr-2 mb-2 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4', text='Ordina per regista', click=sort_by_director)

    movie_table = jp.Table(style='margin-top: 95px; color:black;width:59%')
    p_title = jp.P(a=div1, style='margin-top: 82px;color: black;font-size:20px', classes='hidden')
    p_director = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    p_date = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    p_gross = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    p_budget = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    p_rating = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    p_distributor = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    p_imdb_rating = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    p_time = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    body_table = jp.Tbody(style='overflow:auto;', a=movie_table)
    body_table_sorted = jp.Tbody(style='overflow:auto;')
    body_table_title_sorted = jp.Tbody(style='overflow:auto;')
    li2 = jp.Li(style='margin-left: 1%;text-decoration: none;float: left;color: black;font-size:20px', a=ul)
    li2.set_classes('hidden')
    tasto_indietro = jp.Button(a=li2,text='Clicca qui per tornare indietro', style='width: 263px;color:red;', click=remove_genre)
    tasto_indietro_lista_film = jp.Button(a=li2, text='Clicca qui per tornare alla lista',style='width: 265px;color:red;',classes='hidden', click=return_to_list)

    genres = ['Avventura','Azione','Commedia','Musical','Horror','Romantico','Thriller','Drammatico','Documentario','Altro']

    for i in genres:
        jp.Button(text=i, a=div2,click=view_genre,style=f'border-radius: .125rem;font-weight: 700;height: 12rem;margin: .5rem;margin-right: .5rem;margin-bottom: .5rem;padding-bottom: .5rem;padding-top: .5rem;padding-right: 1rem;padding-left: 1rem;color: #fff;width: 14rem;background-image: url("/static/images/{i}.jpg");')

    return wp
Example #28
0
def hello_function():
    wp = jp.WebPage()
    wp.add(jp.P(text="Hello there!", classes="text-5xl m-2"))
    return wp
Example #29
0
def hello_world():
    wp = jp.WebPage()
    my_paragraph_design = 'w-64 bg-blue-500 m-2 hover:bg-blue-700 text-white font-bold py-2 px-3 rounded'
    for i in range(1, 11):
        jp.P(text=f'{i}) Hello World!', a=wp, classes=my_paragraph_design)
    return wp
Example #30
0
def hello_world():
    wp = jp.WebPage()
    p = jp.P(text='Hello World!', a=wp)
    return wp