def box_behavior(event): if event.shiftKey and event.ctrlKey: color = event_color_mixed[event.type] elif event.shiftKey: color = event_color_shift[event.type] elif event.ctrlKey: color = event_color_crtl[event.type] elif event.type == 'contextmenu': color = 'wheat' else: color = event_color[event.type] area_output = 'evento:"{}", cor:"{}", shift:{}, ctrl:{}'.format( event.type, color, event.shiftKey, event.ctrlKey) document['caixa'].style.fill = color document.select_one('span').text = '{' + area_output + '}' try: document.select_one('#area').text += '{' + area_output + '}\n' except Exception: ...
def done_card(event): card, primary, error = card_elements(event) error.remove() primary.text = 'Refazer' primary.bind('click', redo) primary.unbind('click', done_card) document.select_one('#done') <= card
def error_message(msg: str): has_error = document.select_one('#error') if not has_error: div = html.DIV(msg, Id='error', Class='terminal-alert terminal-alert-error') fieldset = document.select_one('fieldset') fieldset.insertBefore(div, fieldset.firstChild)
def done(evt): card, primary, error, task_id = card_elements(evt) primary.text = 'Refazer!' error.remove() primary.unbind('click', done) primary.bind('click', redo) change_state(task_id, 'done') document.select_one('div.done div.terminal-timeline') <= card
def back_card(event): card, primary, error = card_elements(event) primary.text = 'Fazer' error.text = 'Cancelar' primary.unbind('click', done_card) primary.bind('click', doing_card) error.unbind('click', back_card) error.bind('click', cancel_card) document.select_one('#todo') <= card
def read_form(): name = (document.select_one('#todo-name').value,) description = (document.select_one('#todo-desc').value,) check = document.select_one('#todo-next').checked valid = bool(name[0]) if not valid: error_message() else: clear_error_messages() return name, description, check, valid
def doing_card(event): card, primary, error = card_elements(event) primary.text = 'Pronto' error.text = 'Voltar' primary.unbind('click', doing_card) primary.bind('click', done_card) error.unbind('click', cancel_card) error.bind('click', back_card) document.select_one('#doing') <= card
def task_register(evt): name = document.select_one('[name="name"]') desc = document.select_one('[name="desc"]') urgent = document.select_one('[name="urgent"]') json = { 'name': name.value, 'description': desc.value, 'urgent': urgent.checked, 'state': 'todo', } request('/task-register', json=json, bind=register_task)
def show_speller(self, visible) -> None: """""" if visible: self.speller.style = {'display': 'block'} self.last_value = w.component['trials'].mdc.getValue() w.component['trials'].mdc.setValue(-1) document.select_one('#value_trials').html = ' infinite' else: self.speller.style = {'display': 'none'} w.component['trials'].mdc.setValue(self.last_value) document.select_one('#value_trials').html = f' {self.last_value}'
def redo(event): card, primary, error = card_elements(event) iternal_div = card.select('div')[1] error = html.BUTTON('Cancelar', Class='btn btn-error btn-ghost cancel') error.bind('click', cancel_card) iternal_div <= error primary.text = 'Fazer' primary.unbind('click', redo) primary.bind('click', doing_card) document.select_one('#todo') <= card
def redo(evt): card, primary, error, task_id = card_elements(evt) internal_div = card.select('div')[1] primary.text = 'Fazer!' primary.unbind('click', redo) primary.bind('click', do) error = html.BUTTON('Cancelar!', Class='btn btn-error btn-ghost cancel') error.bind('click', cancel) internal_div <= error change_state(task_id, 'todo') document.select_one('div.todo div.terminal-timeline') <= card
def back(evt): card, primary, error, task_id = card_elements(evt) # Texto primary.text = 'Fazer!' error.text = 'Cancelar!' # Unbinding primary.unbind('click', done) error.unbind('click', back) # binds primary.bind('click', do) error.bind('click', cancel) change_state(task_id, 'todo') document.select_one('div.todo div.terminal-timeline') <= card
def alerts(event): response = False name = '' window.alert('Isso é um alerta!!') while not (response and name): name = window.prompt('Digite seu nome') msg = 'Seu nome é vazio. Vamos refazer a operação' if name: msg = 'Esse é mesmo o seu nome?' response = window.confirm(msg) document.select_one('.body_b') <= html.H1(f'Olar {name}') document.select_one('.body_b') <= html.BR()
def do(evt): card, primary, error, task_id = card_elements(evt) # Texto primary.text = 'Pronto!' error.text = 'Voltar' # Unbinding primary.unbind('click', do) error.unbind('click', cancel) # binds primary.bind('click', done) error.bind('click', back) change_state(task_id, 'doing') document.select_one('div.doing div.terminal-timeline') <= card
def display(evt): """Called on click on a filename in the file browser (left column).""" file_name = evt.target.text # Store current file current = document.select_one(".current") if current.text == file_name: rename(current) return position = editor.getCursorPosition() open_files[current.text] = { "content": editor.getValue(), "cursor": [position.row, position.column] } # Put highlight on new file current.classList.remove("current") evt.target.classList.add("current") # Load selected file new_file = open_files[file_name] editor.setValue(new_file["content"]) editor.moveCursorTo(*new_file["cursor"], False) editor.scrollToLine(new_file["cursor"][0], True) editor.clearSelection() editor.focus()
def error_message(): if not document.select('.terminal-alert-error'): error_div = html.DIV( 'Preencha corretamente', Class='terminal-alert terminal-alert-error', ) form_field = document.select_one('fieldset') form_field.insertBefore(error_div, form_field.firstChild)
def register_task(req): json_response = JSON.parse(req.text) div = document.select_one('div.todo div.terminal-timeline') if json_response['urgent']: div.insertBefore(html_todo(json_response), div.firstChild) else: div <= html_todo(json_response)
def create_progress_bar(event): if not document.select('.progress-bar'): bar_attrs = { 'class': 'progress-bar-filled', 'style': { 'width': '0%' }, 'data-filled': 'Loading 0%', 'id': 'bar', } progress = html.DIV(Class='progress-bar progress-bar-show-percent') progress <= html.DIV(**bar_attrs) document.select_one('#progress-bar') <= progress for value in range(0, 101): timer.set_timeout(partial(manage_progress, '#bar', value), value * 50)
def target_notice(self, target: str) -> None: """Highlight the character that's subject must focus on.""" # self.send_marker(f"TARGET:{target}") target = document.select_one(f".p300-{target}-") target.style = { 'color': '#00ff00', 'opacity': 0.5, 'font-weight': 'bold' }
def get_todos(req): todo_states = {'todo': html_todo, 'doing': html_doing, 'done': html_done} json = JSON.parse(req.text) for todo in json: div = document.select_one(f'div.{todo["state"]} div.terminal-timeline') if todo['urgent']: div.insertBefore(todo_states[todo['state']](todo), div.firstChild) else: div <= todo_states[todo['state']](todo)
def manage_progress(id, percent): bar = document.select_one(id) bar.style.width = f'{percent}%' bar['data-filled'] = f'Loading {percent}%' if percent == 0: text = document.select_one('#finished') text.remove() if percent == 100: progress_bar = document.select_one('#progress-bar') progress_bar.clear() progress_bar <= html.BR() alert = html.DIV('Carregamento concluído', ID='finished', Class='terminal-alert') alert.style.color = '#08D10E' alert.style.borderColor = '#08D10E' progress_bar <= alert
def exercice_08(): r_value = randint(1, 50) def btn_creates(index): btn = document.select('#request') if btn: btn[0].remove() classes = ( f'btn btn-{choice(["default", "primary", "error"])} btn-ghost') if index == r_value: classes += ' selenium' print('selenium') create_btn('fieldset', 'Botão', classes) document.select_one('.terminal-alert-error').remove() fieldset = document.select_one('fieldset') fieldset <= html.P( 'Encontre a classe .selenium no elementos que estão surgindo') for index in range(0, 51): timer.set_timeout(partial(btn_creates, index), index * 500)
def task_register(evt): name = document.select_one('[name="name"]') desc = document.select_one('[name="desc"]') urgent = document.select_one('[name="urgent"]') if not name.value: error_message('Você esqueceu de preencher o campo "Nome"') return json = { 'name': name.value, 'description': desc.value, 'urgent': urgent.checked, 'state': 'todo', } name.value = '' desc.value = '' urgent.checked = False request('/task-register', json=json, bind=register_task)
def test_browser_worker(): """Main script.""" from browser import bind, document, worker result = document.select_one('.result') inputs = document.select("input") # Create a web worker, identified by a script id in this page. myWorker = worker.Worker("worker") @bind(inputs, "change") def change(evt): """Called when the value in one of the input fields changes.""" # Send a message (here a list of values) to the worker myWorker.send([x.value for x in inputs]) @bind(myWorker, "message") def onmessage(e): """Handles the messages sent by the worker.""" result.text = e.data # Code of the worker script: """Web Worker script.""" # In web workers, "window" is replaced by "self". from browser import bind, self @bind(self, "message") def message(evt): """Handle a message sent by the main script. evt.data is the message body. """ try: result = int(evt.data[0]) * int(evt.data[1]) workerResult = f'Result: {result}' # Send a message to the main script. # In the main script, it will be handled by the function bound to # the event "message" for the worker. self.send(workerResult) except ValueError: self.send('Please write two numbers') ## exercise event handlers for f in change, onmessage, message: f(evt)
def create_card(event): name, desc, checked, valid = read_form() if valid: todo = document.select_one('#todo') card = html.DIV(Class='terminal-card') card <= html.HEADER(name) card <= html.DIV(desc) buttons = html.DIV(Class='buttons') do = html.BUTTON('Fazer', Class='btn btn-primary btn-ghost do') cancel = html.BUTTON( 'Cancelar', Class='btn btn-error btn-ghost cancel' ) do.bind('click', doing_card) cancel.bind('click', cancel_card) buttons <= do buttons <= cancel card <= buttons timer.set_timeout( partial(create_card_timer, checked, todo, card), randint(1, 3000) )
def create_card(event): name, desc, checked, valid = read_form() if valid: todo = document.select_one('#todo') card = html.DIV(Class='terminal-card') card <= html.HEADER(name, Class='name') card <= html.DIV(desc, Class='description') buttons = html.DIV(Class='buttons') do = html.BUTTON('Fazer', Class='btn btn-primary btn-ghost do') cancel = html.BUTTON('Cancelar', Class='btn btn-error btn-ghost cancel') do.bind('click', doing_card) cancel.bind('click', cancel_card) buttons <= do buttons <= cancel card <= buttons if checked: todo.insertBefore(card, todo.firstChild) else: todo <= card
def __init__(self, *args, **kwargs): """""" super().__init__(*args, **kwargs) document.select_one('body') <= html.H1('Hello World') logging.warning('HOLA')
def set_value(id, value): self.widgets[id] = [self._round( value[0]), self._round(value[1])] document.select_one( f'#value_{id}').html = f' {self.get_value(id)[0]}-{self.get_value(id)[1]} {unit}'
def set_value(id, value): self.widgets[id] = self._round(value) document.select_one( f'#value_{id}').html = f' {self.get_value(id)} {unit}'
def check_error_message(evt): if (error := document.select_one('#error')): error.remove()