How to use recordPosition method in Playwright Internal

Best JavaScript code snippet using playwright-internal

u-db.service.js

Source:u-db.service.js Github

copy

Full Screen

1import React from 'react'2import ReactDOM from 'react-dom';3import * as moment from 'moment';4import * as $ from 'jquery';5import { translate } from '../services/u-language-codes.service';6import ufwX from '../services/ufw-interface';7import ugsX from '../services/u-generics.service';8export class UDbService {9 view_key_value = "";10 recordPosition = 0;11 view_tab = 0;12 primary_dataset = null;13 on_binding = false;14 auto_update = false;15 datasets = "";16 context = null;17 ufw = null;18 ugs = null;19 constructor() {20 this.ufw = ufwX;21 this.ugs = ugsX;22 }23 //=================================================================================24 selectTab(class_name, tab) { //tabindex start at 0 25 $(class_name + ' li').removeClass('active');26 $('.tab-content .tab-pane').removeClass('active');27 $('a[href="#tab' + tab + '"]').closest('li').addClass('active');28 $('#tab' + tab).addClass('active');29 }30 //=================================================================================31 prepareDatasets(businessObject) {32 this.datasets = businessObject.datasets;33 if (!this.datasets) return;34 for (var i = 0; i < this.datasets.length; i++) {35 this.datasets[i].dataset_format = JSON.parse(this.datasets[i].dataset_format);36 this.datasets[i].dataset_content = JSON.parse(this.datasets[i].dataset_content);37 }38 this.primary_dataset = this.datasets[0];39 if (this.primary_dataset.dataset_content.length === 0) {40 this.createNewPrimaryRow();41 }42 if (this.recordPosition > this.primary_dataset.dataset_content.length - 1)43 this.recordPosition = this.primary_dataset.dataset_content.length - 1;44 }45 //=================================================================================46 createNewPrimaryRow() {47 var newRow = {};48 for (var key in this.primary_dataset.dataset_format[0]) {49 newRow[key] = '';50 }51 newRow['__State'] = '1';52 this.primary_dataset.dataset_content.push(newRow);53 }54 //=================================================================================55 genericActionsExit() {56 this.genericActions('Exit');57 }58 //=================================================================================59 genericActions(action) {60 if (action) {61 if (action.includes("New")) {62 this.onNewRecordEvent();63 return false;64 }65 if (action.includes("Delete")) {66 this.onDeleteRecordEvent();67 return false;68 }69 if (action.includes("Exit")) {70 this.onBackToCallerEvent();71 return false;72 }73 }74 return true;75 }76 //=================================================================================77 bindData(caller) {78 if (caller) this.context = caller;79 var element_navpos = document.getElementById('eid_nav_position');80 if (element_navpos) {81 var navpos = (this.recordPosition + 1).toString() + " / " + this.primary_dataset.dataset_content.length.toString();82 element_navpos.value = navpos;83 }84 this.on_binding = true;85 if (this.context && (typeof this.context.beforeBinding !== 'undefined' && typeof this.context.beforeBinding === 'function')) {86 this.context.beforeBinding();87 }88 this.bindInputs();89 this.bindPhones();90 this.bindAddresses();91 this.bindTables();92 this.bindSelects();93 this.bindReactSelects();94 if (this.context && (typeof this.context.afterBinding !== 'undefined' && typeof this.context.afterBinding === 'function')) {95 this.context.afterBinding();96 }97 this.on_binding = false;98 this.setNavigationButtonsBehavior();99 }100 //=================================================================================101 bindReactSelects() {102 var slct = null;103 for (let i = 1; i <= 10;++i) {104 slct = document.getElementById('ReactSelect' + i.toString());105 if (slct) {106 this.context.setSelectionList(slct, 1);107 }108 else {109 return;110 }111 }112 }113 //=================================================================================114 bindSelects() {115 var value = '';116 Array.from(document.getElementsByTagName('Select')).forEach((select) => {117 var dataset_name = select.getAttribute('data-dataset');118 if (dataset_name) {119 this.context.setSelectionList(select, dataset_name);120 }121 var bind = select.getAttribute('data-bind');122 if (bind) {123 value = this.primary_dataset.dataset_content[this.recordPosition][bind];124 if (!value) value = '';125 this.context.setSelectedValue(select.id, value);126 }127 })128 }129 //=================================================================================130 bindTables() {131 Array.from(document.getElementsByTagName('table')).forEach((table) => {132 var tableRows = "";133 var dataset_name = table.getAttribute('data-bind');134 if (dataset_name) {135 var dataset = this.getDataset(dataset_name);136 if (dataset) {137 while (table.tBodies.length > 0) {138 if (table.id === 'eid_main_table') return;139 table.removeChild(table.tBodies[0])140 }141 var tblBody = document.createElement("tbody");142 table.appendChild(tblBody);143 if ((table.id !== 'eid_main_table') && (dataset.foreign_key_field)) {144 var parentKeyField = this.primary_dataset.dataset_content[this.recordPosition][dataset.parent_key_field];145 tableRows = dataset.dataset_content.filter(item => {146 return item[dataset.foreign_key_field] === parentKeyField147 });148 }149 else {150 tableRows = dataset.dataset_content;151 }152 tableRows.forEach((tableRow) => {153 var row = this.createTableRow(table, tableRow);154 tblBody.appendChild(row);155 });156 }157 }158 })159 }160 //=================================================================================161 createTableRow(table, json_table_row) {162 var _row = document.createElement('tr');163 Array.from(table.getElementsByTagName('th')).forEach((header) => {164 var _cell = document.createElement('td');165 _cell.style.cssText = 'margin: 0 !important; padding-right: 3px; padding-left: 3px; border: solid 1px gray; vertical-align: middle; background-color: white; color: black';166 var _label = document.createElement("Label");167 var bind = header.getAttribute('data-bind');168 if (bind && json_table_row[bind]) {169 _label.innerHTML = json_table_row[bind];170 }171 _cell.appendChild(_label);172 _row.appendChild(_cell);173 });174 return _row;175 }176 //=================================================================================177 getDataset(dataset_name) {178 if (this.datasets) {179 for (var gdi = 0; gdi < this.datasets.length; gdi++) {180 if (dataset_name === this.datasets[gdi].dataset_name) {181 return this.datasets[gdi];182 }183 }184 }185 return null;186 }187 //=================================================================================188 bindInputs() {189 Array.from(document.getElementsByTagName('input')).forEach((input) => {190 var bind = input.getAttribute('data-bind');191 if (bind) {192 var value = this.primary_dataset.dataset_content[this.recordPosition][bind];193 if (!value) value = '';194 if (input.type === 'checkbox') {195 input.value = value === "1" ? 'on' : 'off';196 input.checked = value === "1" ? true : false;197 }198 else {199 input.value = value;200 }201 }202 });203 }204 //=================================================================================205 bindPhones() {206 Array.from(document.querySelectorAll("[href*=tel]")).forEach((phone) => {207 var bind = phone.getAttribute('data-bind');208 if (bind) {209 phone.style.textAlign = localStorage.getItem('direction') === "ltr" ? "left" : "right";210 var value = this.primary_dataset.dataset_content[this.recordPosition][bind];211 if (value) {212 //phone.text = value;213 phone.innerHTML = value;214 phone.href = "tel:" + value;215 }216 }217 });218 }219 //=================================================================================220 bindAddresses() {221 Array.from(document.querySelectorAll("[href*=waze]")).forEach((address) => {222 var bind = address.getAttribute('data-bind');223 if (bind) {224 //address.style.textAlign = localStorage.getItem('direction') === "ltr" ? "left" : "right";225 var value = this.primary_dataset.dataset_content[this.recordPosition][bind];226 if (value) { // .css("text-align", "center");227 //address.text = value;228 address.innerHTML = value;229 address.href = "waze://?q=" + value;230 }231 }232 });233 }234 //=================================================================================235 setNavigationButtonsBehavior() {236 var prevButton = document.getElementById("eid_nav_prev");237 if (prevButton) (prevButton).disabled = (this.recordPosition === 0);238 //if (prevButton) (prevButton as HTMLInputElement).disabled = (this.recordPosition === 0);239 var nextButton = document.getElementById("eid_nav_next");240 if (nextButton) (nextButton).disabled = (this.recordPosition >= this.primary_dataset.dataset_content.length - 1);241 //if (nextButton) (nextButton as HTMLInputElement).disabled = (this.recordPosition >= this.primary_dataset.dataset_content.length - 1);242 }243 //=================================================================================244 navigatePrev() {245 if (this.recordPosition === 0) return;246 if (!this.onAboutToNavigate()) return;247 this.recordPosition--;248 this.bindData();249 if (this.context &&250 typeof this.context.setMainTableCursor !== 'undefined' &&251 typeof this.context.setMainTableCursor === 'function') {252 this.context.setMainTableCursor();253 }254 }255 //=================================================================================256 navigateNext() {257 if (this.recordPosition >= this.primary_dataset.dataset_content.length - 1) return;258 if (!this.onAboutToNavigate()) return;259 this.recordPosition++;260 this.bindData();261 if (this.context &&262 typeof this.context.setMainTableCursor !== 'undefined' &&263 typeof this.context.setMainTableCursor === 'function') {264 this.context.setMainTableCursor();265 }266 }267 //=================================================================================268 confirmExit() {269 this.onAboutToNavigate()270 }271 //=================================================================================272 onNewRecordEvent() {273 if (!this.onAboutToNavigate()) return;274 this.createNewPrimaryRow();275 this.recordPosition = this.primary_dataset.dataset_content.length - 1;276 this.bindData();277 }278 //=================================================================================279 onDeleteRecordEvent() {280 if (this.primary_dataset.dataset_content[this.recordPosition].__State !== '1') {// Indicate new row281 var stmt = this.formSqlDeleteStmt();282 if (stmt === "") return;283 this.ufw.WebProcedure(this.primary_dataset.dataset_name, stmt);284 }285 this.primary_dataset.dataset_content.splice(this.recordPosition, 1);286 if (this.recordPosition >= this.primary_dataset.dataset_content.length - 1) {287 this.recordPosition = this.primary_dataset.dataset_content.length - 1;288 }289 this.bindData();290 }291 //=====================================================================================292 onBackToCallerEvent() {293 return this.onAboutToNavigate();294 }295 //=================================================================================296 onRecordBeenModified() {297 if (!this.auto_update) {298 this.ugs.Loger("*** Error: Record been modified with no auto update procedure", true);299 return;300 }301 var stmt = (this.primary_dataset.dataset_content[this.recordPosition]['__State'] === '1') ?302 this.formSqlInsertStmt() : this.formSqlUpdateStmt();303 if (stmt === "") return;304 this.ufw.WebProcedure(this.primary_dataset.dataset_name, stmt);305 this.primary_dataset.dataset_content[this.recordPosition]['__State'] = "0";306 }307 //=================================================================================308 onAboutToNavigate() {309 this.onCheckForChanges();310 return true;311 }312 //=================================================================================313 onCheckForChanges() {314 var inputs = document.querySelectorAll('input,Select');315 for (var ocfci = 0; ocfci < inputs.length; ocfci++) {316 var ui_element = inputs[ocfci];317 var field_name = ui_element.getAttribute('data-bind');318 if (field_name) {319 var field_type = this.primary_dataset.dataset_format[0][field_name];320 var record_value = this.primary_dataset.dataset_content[this.recordPosition][field_name];321 if (!record_value) record_value = '';322 var ui_value = this.getElementInputValue(ui_element);323 if (this.columnBeenModified(record_value, ui_value, field_type)) {324 this.onRecordBeenModified();325 break;326 }327 }328 }329 }330 //=================================================================================331 columnBeenModified(record_value, ui_value, field_type) {332 if (field_type === "String") {333 return (String(record_value) !== String(ui_value));334 }335 else if (field_type === "Int") {336 return (parseInt(record_value) !== parseInt(ui_value));337 }338 else if (field_type === "Boolean") {339 return (parseInt(record_value) !== parseInt(ui_value));340 }341 else if (field_type === "DateTime") {342 return (String(record_value) !== String(ui_value));343 }344 else if (field_type === "Time") {345 return (String(record_value) !== String(ui_value));346 }347 else if (field_type === "Real") {348 return (parseFloat(record_value) !== parseFloat(ui_value));349 }350 return false;351 }352 //=================================================================================353 formSqlUpdateStmt() {354 if (!this.checkForUpdateValidity()) return "";355 var modifiedColumns = "";356 for (var field_name in this.primary_dataset.dataset_format[0]) {357 if (field_name.startsWith("__")) continue;358 var ui_element = document.getElementById(field_name);359 if (!ui_element) continue;360 var field_type = this.primary_dataset.dataset_format[0][field_name];361 var record_value = this.primary_dataset.dataset_content[this.recordPosition][field_name];362 if (!record_value) record_value = '';363 var ui_value = this.getElementInputValue(ui_element);364 if (this.columnBeenModified(record_value, ui_value, field_type)) {365 this.primary_dataset.dataset_content[this.recordPosition][field_name] = ui_value;366 modifiedColumns += field_name + "=" + this.getSqlSyntaxColumnValue(ui_value, field_type) + ",";367 }368 }369 var where_stmt = this.formSqlWhereStmt();370 return `UPDATE ${this.primary_dataset.dataset_name} `371 + `SET ${this.ugs.rtrim(",", modifiedColumns)} `372 + `WHERE ${where_stmt}`;373 }374 //=================================================================================375 formSqlInsertStmt() {376 if (!this.checkForInsertValidity()) return "";377 var column_names = "", column_values = "";378 for (var field_name in this.primary_dataset.dataset_format[0]) {379 if (field_name.startsWith("__")) continue;380 if (this.isPrimaryKey(field_name)) continue;381 var field_type = this.primary_dataset.dataset_format[0][field_name];382 var ui_element = "";383 var ui_value = "";384 if (field_name === this.primary_dataset.foreign_key_field) {385 ui_value = this.primary_dataset.foreign_key_value;386 }387 else {388 ui_element = document.getElementById(field_name);389 if (ui_element) {390 ui_value = this.getElementInputValue(ui_element);391 }392 }393 this.primary_dataset.dataset_content[this.recordPosition][field_name] = ui_value;394 column_names += field_name + ",";395 column_values += this.getSqlSyntaxColumnValue(ui_value, field_type) + ",";396 }397 return `INSERT INTO ${this.primary_dataset.dataset_name} `398 + `(${this.ugs.rtrim(",", column_names)}) `399 + `VALUES(${this.ugs.rtrim(",", column_values)}`;400 }401 //=================================================================================402 formSqlDeleteStmt() {403 if (!this.checkForDeleteValidity()) return "";404 var where_stmt = this.formSqlWhereStmt();405 return `DELETE FROM ${this.primary_dataset.dataset_name} WHERE ${where_stmt}`;406 }407 //=================================================================================408 isPrimaryKey(field_name) {409 for (var ipki = 1; ; ipki++) {410 var primary_field_name = this.ugs.fieldByPosition(this.primary_dataset.primary_key_fields, ipki, "|");411 if (!primary_field_name) break;412 if (field_name === primary_field_name) return true;413 }414 return false;415 }416 //=================================================================================417 formSqlWhereStmt() {418 var where_stmt = "";419 for (var fswsi = 1; ; fswsi++) {420 var primary_field_name = this.ugs.fieldByPosition(this.primary_dataset.primary_key_fields, fswsi, "|");421 if (!primary_field_name) break;422 var primary_field_type = this.primary_dataset.dataset_format[0][primary_field_name];423 var primary_field_value = this.primary_dataset.dataset_content[this.recordPosition][primary_field_name];424 where_stmt += primary_field_name + "=" + this.getSqlSyntaxColumnValue(primary_field_value, primary_field_type) + " AND ";425 }426 if (where_stmt === "") where_stmt = "0=1";427 return this.ugs.rtrim(" AND ", where_stmt);428 }429 //=================================================================================430 checkForUpdateValidity() {431 if (!this.primary_dataset.dataset_name) {432 this.ugs.Loger("Error: No table Name", true);433 return false;434 }435 if (!this.primary_dataset.primary_key_fields) {436 this.ugs.Loger("Error: No primary key", true);437 return false;438 }439 return true;440 }441 //=================================================================================442 checkForInsertValidity() {443 if (!this.primary_dataset.dataset_name) {444 this.ugs.Loger("Error: No table Name", true);445 return false;446 }447 return true;448 }449 //=================================================================================450 checkForDeleteValidity() {451 if (!this.primary_dataset.dataset_name) {452 this.ugs.Loger("Error: No table Name", true);453 return false;454 }455 if (!this.primary_dataset.primary_key_fields) {456 this.ugs.Loger("Error: No primary key", true);457 return false;458 }459 return true;460 }461 //=================================================================================462 getSqlSyntaxColumnValue(raw_value, field_type) {463 if (field_type === "String") {464 return this.getSqlStringSyntax(String(raw_value));465 }466 else if (field_type === "Int") {467 return this.getSqlIntSyntax(String(raw_value));468 }469 else if (field_type === "Boolean") {470 return this.getSqlBoolSyntax(String(raw_value));471 }472 else if (field_type === "DateTime") {473 return this.getSqlDatetimeSyntax(String(raw_value));474 }475 //else if (field_type === "Time") {476 // return this.getSqlTimeSyntax(String(raw_value));477 //}478 else if (field_type === "Real") {479 return this.getSqlRealSyntax(String(raw_value));480 }481 return this.getSqlStringSyntax(String(raw_value)); // on default (or unknown field type)482 }483 //=================================================================================484 getSqlStringSyntax(ui_value) {485 var return_value = ui_value.replace("'", "''").replace("\"", "\"\"").replace("\\", "\\\\");486 return "'" + return_value + "'";487 }488 //=================================================================================489 getSqlIntSyntax(ui_value) {490 var return_value = String(parseInt(ui_value ? ui_value : "0"));491 return return_value;492 }493 //=================================================================================494 getSqlDateSyntax(ui_value) {495 if (!ui_value) return "NULL";496 var momDate = moment(ui_value, ["DD-MM-YYYY", "MM-DD-YYYY", "YYYY-MM-DD"])497 var return_value = momDate.format('YYYY/MM/DD');498 return "'" + return_value + "'";499 }500 //=================================================================================501 getSqlDatetimeSyntax(ui_value) {502 if (!ui_value) return "NULL";503 var moment_date = moment(ui_value, ["DD-MM-YYYY", "MM-DD-YYYY", "YYYY-MM-DD"])504 var return_value = moment_date.format('YYYY/MM/DD hh:mm:ss');505 return "'" + return_value + "'";506 }507 //=================================================================================508 getSqlRealSyntax(ui_value) {509 var return_value = String(parseFloat(ui_value ? ui_value : "0"));510 return return_value;511 }512 //=================================================================================513 getSqlBoolSyntax(ui_value) {514 var return_value = String(parseInt(ui_value ? ui_value : "0") !== 0 ? "1" : "0");515 return return_value;516 }517 //==================================================================================518 matchStart(params, data) {519 params.term = params.term || '';520 if (data.text.toUpperCase().indexOf(params.term.toUpperCase()) === 0) {521 return data;522 }523 return false;524 }525 //=================================================================================526 setNavigationBar(className) {527 if (!className) return;528 var a = document.getElementById('navigatebar');529 var direction = localStorage.getItem('direction');530 var prevIcon = 'nav_back fa fa-arrow-circle-' + (direction === 'rtl' ? 'right' : 'left');531 var nextIcon = 'nav_forw fa fa-arrow-circle-' + (direction === 'rtl' ? 'left' : 'right');532 const element = 533 (<div style={{ marginTop: 1.25 + 'vh' }}>534 <div className='row form-group col-12'>535 <div className='col-4'>536 <div className='input-group'>537 <span className='input-group-addon'>538 <i className={prevIcon} aria-hidden='true'></i>539 </span>540 <input id='eid_nav_prev' type='button' className='btn btn-primary btn-block'541 style={{ color: "white", fontSize: ".8rem", maxHeight: "30px" }}542 value={translate('Previous')} />543 </div>544 </div>545 <div className='col-4' style={{ textAlign: "center" }}>546 <input id='eid_nav_position' type='text' className='form-control'547 style={{ fontSize: .8 + "rem", fontWeight: "700", maxHeight: "30px", textAlign: "center" }} dir='ltr' readOnly />548 </div>549 <div className='col-4'>550 <div className='input-group'>551 <input id='eid_nav_next' type='button' className='btn btn-primary btn-block'552 style={{ color: "white", fontSize: .8 + "rem", maxHeight: 30 }}553 value={translate('Next')}/>554 <span className='input-group-addon'>555 <i className={nextIcon} aria-hidden='true'></i>556 </span>557 </div>558 </div>559 </div>560 </div>);561 ReactDOM.render(element, a);562 $('#eid_nav_prev').on('click', this.navigatePrev.bind(this));563 $('#eid_nav_next').on('click', this.navigateNext.bind(this));564 }565 //=================================================================================566 getDatasetColumnValue(datasetName, rowNumber, columnName) {567 var dataset = this.getDataset(datasetName);568 if (!dataset || (dataset.dataset_content.length <= rowNumber)) return "";569 return dataset.dataset_content[rowNumber][columnName];570 }571 //=================================================================================572 getDatasetRow(datasetName, jsonKey, jsonValue) {573 var rows = this.getDatasetRowsArray(datasetName, jsonKey, jsonValue);574 return (rows.lenght === 0 ? '' : rows[0]);575 }576 //=================================================================================577 getDatasetRowsArray(datasetName, jsonKey, jsonValue) {578 var dataset = this.getDataset(datasetName);579 if (!dataset) return JSON.parse("[]");580 var tableRows = dataset.dataset_content.filter(item => {581 return item[jsonKey] === jsonValue;582 });583 return tableRows;584 }585 //==================================================================================586 checkForLegalIsraelIDCard(il_id) {587 var id = String(il_id).trim();588 return (id.length === 9 && !isNaN(id)) && Array.from(id, Number).reduce((counter, digit, i) => {589 const step = digit * ((i % 2) + 1);590 return counter + (step > 9 ? step - 9 : step);591 }) % 10 === 0;592 }593 //==================================================================================594 checkForLegalEmail(str_email) {595 return ((str_email.length > 5) && (str_email.indexOf('@') > 0));596 }597 //==================================================================================598 checkForRequired(elm_id) {599 var ui_element = document.getElementById(elm_id); //as HTMLInputElement;600 var ui_value = this.getElementInputValue(ui_element);601 //var ui_prompt = ui_element.getAttribute("placeholder");602 var ui_prompt = this.getElementInputLabel(ui_element);603 if (!ui_value) {604 this.ugs.Loger(`Error: ${this.ugs.msg_no_value}: ${ui_prompt}`, true);605 return false;606 }607 return true;608 }609 //==================================================================================610 checkForValidity(elm_id, validity_check) {611 var ui_element = document.getElementById(elm_id);612 var ui_value = this.getElementInputValue(ui_element);613 //var ui_prompt = ui_element.getAttribute("placeholder");614 var ui_prompt = this.getElementInputLabel(ui_element);615 if (!ui_value) return true;616 if (!validity_check(ui_value)) {617 this.ugs.Loger(`Error: ${this.ugs.msg_illegal_value}: ${ui_prompt}`, true);618 return false;619 }620 return true;621 }622 //==================================================================================623 checkForLegalPhoneNumber(eid_ac, eid_pn) {624 var elm_area_code = document.getElementById(eid_ac);625 var elm_phone_number = document.getElementById(eid_pn);626 var area_code = this.getElementInputValue(elm_area_code);627 var phone_number = this.getElementInputValue(elm_phone_number);628 //var ac_prompt = elm_area_code.getAttribute("placeholder");629 var ac_prompt = this.getElementInputLabel(elm_area_code);630 //var pn_prompt = elm_phone_number.getAttribute("placeholder");631 var pn_prompt = this.getElementInputLabel(elm_phone_number);632 if (phone_number) {633 if (phone_number.length !== 7) {634 this.ugs.Loger(`Error: ${this.ugs.msg_illegal_value}: ${pn_prompt}`, true);635 return false;636 }637 }638 if (area_code && !phone_number) {639 this.ugs.Loger(`Error: ${this.ugs.msg_no_value}: ${pn_prompt}`, true);640 return false;641 }642 if (!area_code && phone_number) {643 this.ugs.Loger(`Error: ${this.ugs.msg_no_value}: ${ac_prompt}`, true);644 return false;645 }646 return true;647 }648 //==================================================================================649 getElementInputValue(ui_element) {650 var ui_value = (ui_element).value;651 if (ui_element.tagName.toLowerCase() === 'select') {652 ui_value = this.context.getSelectedValue(ui_element.id);653 }654 if ((ui_element).type === 'checkbox') {655 ui_value = ((ui_element).checked) ? "1" : "0";656 }657 return ui_value;658 }659 //==================================================================================660 getElementInputLabel(ui_element) {661 var ui_label = ui_element.getAttribute("placeholder");662 if (ui_element.tagName.toLowerCase() === 'select') {663 ui_label = this.context.getSelectedLabel(ui_element);664 }665 return ui_label;666 }667}668const udbX = new UDbService();...

Full Screen

Full Screen

parse-getevent.js

Source:parse-getevent.js Github

copy

Full Screen

...63 tmp.push(`sleep ${parseInt((currentTime - lastTime) * 1000)}`)64 }65 lastTime = currentTime66}67function recordPosition(x, y) {68 lastX = x69 lastY = y70}71/**72 * 73 * @param {Object[]} r 74 */75function convertEvent(r, tmp) {76 let types = r.map(o => o.type).join(' ')77 let names = r.map(o => o.name).join(' ')78 switch (types) {79 case 'EV_KEY EV_SYN': // press [up|down] key80 addSleep(r[1].time, tmp)81 let keyCode = r[0].name.match(/[0-9a-f]/) ? parseInt(r[0].name) : r[0].name82 keyCode = `${keyCode}`.includes('_') ? keyCode.split('_')[1] : keyCode83 tmp.push(`key ${r[0].action.toLowerCase()} ${keyCode}`)84 break85 case 'EV_ABS EV_KEY EV_KEY EV_ABS EV_ABS EV_SYN':// touch down86 downTime = parseFloat(r[5].time)87 touchX = parseInt(r[3].action, 16)88 touchY = parseInt(r[4].action, 16)89 downX = touchX90 downY = touchY91 recordPosition(touchX, touchY)92 addSleep(r[5].time, tmp)93 tmp.push(`touch ${r[2].action.toLowerCase()} ${touchX} ${touchY}`)94 break95 case 'EV_ABS EV_KEY EV_KEY EV_ABS EV_ABS EV_ABS EV_SYN': // touch down96 downTime = parseFloat(r[6].time)97 touchX = parseInt(r[3].action, 16)98 touchY = parseInt(r[4].action, 16)99 recordPosition(touchX, touchY)100 addSleep(r[6].time, tmp)101 tmp.push(`touch ${r[2].action.toLowerCase()} ${touchX} ${touchY}`)102 break103 case 'EV_ABS EV_KEY EV_KEY EV_ABS EV_ABS EV_ABS EV_ABS EV_SYN': // touch down104 downTime = parseFloat(r[7].time)105 touchX = parseInt(r[3].action, 16)106 touchY = parseInt(r[4].action, 16)107 recordPosition(touchX, touchY)108 addSleep(r[7].time, tmp)109 tmp.push(`touch ${r[2].action.toLowerCase()} ${touchX} ${touchY}`)110 break111 case 'EV_ABS EV_KEY EV_KEY EV_SYN': // touch up112 addSleep(r[3].time, tmp)113 tmp.push(`touch ${r[2].action.toLowerCase()} ${lastX} ${lastY}`)114 break115 default:116 switch (names) {117 case 'ABS_MT_TOUCH_MINOR SYN_REPORT': // EV_ABS EV_SYN118 case 'ABS_MT_TOUCH_MAJOR SYN_REPORT': // EV_ABS EV_SYN119 case 'ABS_MT_TOUCH_MAJOR ABS_MT_TOUCH_MINOR SYN_REPORT': // EV_ABS EV_ABS EV_SYN120 break;121 case 'ABS_MT_POSITION_X ABS_MT_POSITION_Y ABS_MT_TOUCH_MAJOR SYN_REPORT': // touch move122 case 'ABS_MT_POSITION_X ABS_MT_POSITION_Y ABS_MT_TOUCH_MINOR SYN_REPORT': // touch move123 touchX = parseInt(r[0].action, 16)124 touchY = parseInt(r[1].action, 16)125 recordPosition(touchX, touchY)126 addSleep(r[3].time, tmp)127 tmp.push(`touch move ${touchX} ${touchY}`)128 break;129 case 'ABS_MT_POSITION_X ABS_MT_POSITION_Y ABS_MT_TOUCH_MAJOR ABS_MT_TOUCH_MINOR SYN_REPORT': // touch move130 touchX = parseInt(r[0].action, 16)131 touchY = parseInt(r[1].action, 16)132 recordPosition(touchX, touchY)133 addSleep(r[4].time, tmp)134 tmp.push(`touch move ${touchX} ${touchY}`)135 break;136 case 'ABS_MT_POSITION_X ABS_MT_POSITION_Y SYN_REPORT': // touch move137 touchX = parseInt(r[0].action, 16)138 touchY = parseInt(r[1].action, 16)139 recordPosition(touchX, touchY)140 addSleep(r[2].time, tmp)141 tmp.push(`touch move ${touchX} ${touchY}`)142 break;143 case 'ABS_MT_POSITION_Y SYN_REPORT': // touch move144 touchY = parseInt(r[0].action, 16)145 recordPosition(touchX, touchY)146 addSleep(r[1].time, tmp)147 tmp.push(`touch move ${touchX} ${touchY}`)148 break;149 case 'ABS_MT_POSITION_Y ABS_MT_TOUCH_MINOR SYN_REPORT': // touch move150 touchY = parseInt(r[0].action, 16)151 recordPosition(touchX, touchY)152 addSleep(r[2].time, tmp)153 tmp.push(`touch move ${touchX} ${touchY}`)154 break;155 case 'ABS_MT_POSITION_X ABS_MT_TOUCH_MINOR SYN_REPORT': // touch move156 touchX = parseInt(r[0].action, 16)157 recordPosition(touchX, touchY)158 addSleep(r[2].time, tmp)159 tmp.push(`touch move ${touchX} ${touchY}`)160 break;161 case 'ABS_MT_POSITION_Y ABS_MT_TOUCH_MAJOR SYN_REPORT': // touch move162 touchY = parseInt(r[0].action, 16)163 recordPosition(touchX, touchY)164 addSleep(r[2].time, tmp)165 tmp.push(`touch move ${touchX} ${touchY}`)166 break;167 case 'ABS_MT_POSITION_X ABS_MT_TOUCH_MINOR ABS_MT_TOUCH_MAJOR SYN_REPORT': // touch move168 case 'ABS_MT_POSITION_X ABS_MT_TOUCH_MAJOR ABS_MT_TOUCH_MINOR SYN_REPORT': // touch move169 touchX = parseInt(r[0].action, 16)170 recordPosition(touchX, touchY)171 addSleep(r[3].time, tmp)172 tmp.push(`touch move ${touchX} ${touchY}`)173 break;174 case 'ABS_MT_POSITION_Y ABS_MT_TOUCH_MINOR ABS_MT_TOUCH_MAJOR SYN_REPORT': // touch move175 case 'ABS_MT_POSITION_Y ABS_MT_TOUCH_MAJOR ABS_MT_TOUCH_MINOR SYN_REPORT': // touch move176 touchY = parseInt(r[0].action, 16)177 recordPosition(touchX, touchY)178 addSleep(r[3].time, tmp)179 tmp.push(`touch move ${touchX} ${touchY}`)180 break;181 case 'ABS_MT_POSITION_X ABS_MT_TOUCH_MAJOR SYN_REPORT': // touch move182 touchX = parseInt(r[0].action, 16)183 recordPosition(touchX, touchY)184 addSleep(r[3].time, tmp)185 tmp.push(`touch move ${touchX} ${touchY}`)186 break;187 case 'ABS_MT_POSITION_X SYN_REPORT': // touch move188 touchX = parseInt(r[0].action, 16)189 recordPosition(touchX, touchY)190 addSleep(r[1].time, tmp)191 tmp.push(`touch move ${touchX} ${touchY}`)192 break;193 default:194 console.log('types :', types);195 console.log('names :', names);196 console.log(r);197 throw new Error(JSON.stringify(r))198 }199 }200}...

Full Screen

Full Screen

staff.js

Source:staff.js Github

copy

Full Screen

1'use strict';2/**3 * @ngdoc function4 * @name whereApp.controller:staffCtrl5 * @description6 * # StaffCtrl7 * Controller of the whereApp8 */9angular.module('whereApp')10 .controller('staffCtrl', function ($scope, $localStorage, $location, geoLocation, $firebaseArray, $timeout) {11 redirect();12 dbOperations.init();13 $scope.position;14 $scope.latitude;15 $scope.longitude;16 function redirect() {17 if (!localStorage.StaffName) {18 $location.path('/login');19 }20 };21 $scope.id = localStorage.userid;22 $scope.username = localStorage.StaffName;23 // geoLocation.getCurrentPosition().then(data => {24 // console.log("got data", data);25 // }).catch(err => {26 // console.log("error is ", err);27 // });28 $scope.callGeoLo = function () {29 // geoLocation.getCurrentPostion().30 // then(x => {31 // console.log("data is", x);32 // }).catch(err => {33 // console.log("catch is ", err);34 // });35 geoLocation.getCurrentPosition().36 then(data => {37 console.log("data is", {38 data39 });40 $scope.position = data;41 $scope.latitude = data.coords.latitude;42 $scope.longitude = data.coords.longitude;43 L.marker([$scope.latitude, $scope.longitude]).bindPopup("<b>You are here!</b>").addTo(mymap).openPopup();44 // $scope.$apply(function(){45 // // $scope.position = position;46 // // console.log("data is", position);47 // });48 sendToDb();49 }).catch(err => {50 console.log("catch is ", err);51 });52 };53 var rootRef = firebase.database().ref();54 var userRef = rootRef.child('users');55 $scope.users = $firebaseArray(userRef);56 const users = $firebaseArray(userRef);57 console.log(localStorage.keyFB);58 // var alias = localStorage.keyFB;59 // users.$getRecord("alias").name;60 // console.log(users.$getRecord(1).name);61 const recordPosition = users.$indexFor(localStorage.keyFB);62 63 $scope.loadTask = function () {64 $scope.myvar = true;65 const taskDatee = users.$getRecord(localStorage.keyFB).taskDate;66 var q = new Date(taskDatee);67 $scope.taskDate = q ;68 $scope.taskName = users.$getRecord(localStorage.keyFB).taskName;69 $scope.taskLat = users.$getRecord(localStorage.keyFB).taskLatitude;70 $scope.taskLng = users.$getRecord(localStorage.keyFB).taskLongitude;71 L.circle([$scope.taskLat, $scope.taskLng], 1000, {72 color: 'black',73 fillColor: '#555',74 fillOpacity: 0.575 }).addTo(mymap).bindPopup("<b>Reach Here.</b>").openPopup();76 }77 function sendToDb() {78 // console.log(users.$getRecord(alias).latitude);79 // console.log(users.$indexFor(alias));80 const recordPosition = users.$indexFor(localStorage.keyFB);81 users[recordPosition].latitude = $scope.latitude;82 users[recordPosition].longitude = $scope.longitude;83 84 users.$save(recordPosition).then(data => {85 alert("Position succesfully added");86 });87 }88 // navigator.geolocation.getCurrentPosition(function(position){89 // $scope.$apply(function(){90 // $scope.positionLat = position.coords.latitude;91 // $scope.positionLng = position.coords.longitude;92 // });93 // });94 var mymap = L.map('mapid').setView([28.6547555, 77.38890719999999], 10);95 L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {96 maxZoom: 18,97 attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, ' +98 '<a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +99 'Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',100 id: 'mapbox.streets'101 }).addTo(mymap);102 var popup = L.popup();103// --------------------------------------------------------------verification of position104 var state = 0 ;105 $scope.verify = function(){106 // calcDist();107 console.log($scope.latitude, $scope.longitude, $scope.taskLat, $scope.taskLng);108 calcDist($scope.latitude, $scope.longitude, $scope.taskLat, $scope.taskLng);109 }110 function calcDist(lat1, lon1, lat2, lon2) {111 var R = 6371; // Radius of the earth in km112 var dLat = deg2rad(lat2-lat1); // deg2rad below113 var dLon = deg2rad(lon2-lon1); 114 var a = Math.sin(dLat/2) * Math.sin(dLat/2) +115 Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * 116 Math.sin(dLon/2) * Math.sin(dLon/2);117 var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 118 var d = R * c; // Distance in km119 120 // alert(`The distance is ${d} km.`);121 if(d<1){122 alert(`Task Succesfull`);123 state = "Complete";124 updateStatus(state);125 }126 else{127 alert(`Task unsuccesfull`);128 state = "InComplete";129 updateStatus(state);130 }131 }132 function deg2rad(deg) {133 return deg * (Math.PI/180)134 }135 $(document).ready(function(){136 $("#uploadButton").hide();137 })138 var selectedFile ; 139 $("#file").on("change", function(event){140 selectedFile = event.target.files[0];141 $("#uploadButton").show();142 });143 $scope.uploadFile = function(){144 var storageRef = firebase.storage().ref('/staffImage/' + filename + localStorage.keyFB );145 var filename = selectedFile.name;146 var uploadTask = storageRef.put(selectedFile);147 // ref.put(file).then(function(snapshot) {148 // console.log('Uploaded a blob or file!');149 // });150 uploadTask.on('state_changed', function(snapshot){151 // Observe state change events such as progress, pause, and resume152 // Get task progress, including the number of bytes uploaded and the total number of bytes to be uploaded153 var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;154 console.log('Upload is ' + progress + '% done');155 switch (snapshot.state) {156 case firebase.storage.TaskState.PAUSED: // or 'paused'157 console.log('Upload is paused');158 break;159 case firebase.storage.TaskState.RUNNING: // or 'running'160 console.log('Upload is running');161 break;162 }163 }, function(error) {164 // Handle unsuccessful uploads165 }, function() {166 // Handle successful uploads on complete167 // For instance, get the download URL: https://firebasestorage.googleapis.com/...168 uploadTask.snapshot.ref.getDownloadURL().then(function(downloadURL) {169 // var postKey = firebase.database().ref().child('users/' + localStorage.keyFB ).push().key;170 var updates = {};171 var postData = {172 url: downloadURL,173 user: localStorage.keyFB174 };175 updates['/users/' + localStorage.keyFB+'/posts' ] = postData;176 firebase.database().ref().update(updates); 177 console.log('File available at', downloadURL);178 alert("File Uploaded Successfully")179 }).catch((err) => {180 alert("File didn't uploaded. Try Again!!!");181 }) ;182 });183 }184 function updateStatus(state) {185 const recordPosition = users.$indexFor(localStorage.keyFB);186 users[recordPosition].status = state;187 users.$save(recordPosition);188 }189 $scope.$watch("taskDate", function (newValue, oldValue) {190 $timeout(function() {191 // $('.open-popup-link').magnificPopup({192 // type:'inline',193 // midClick: true // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source.194 // // titleSrc: function(item){195 // // return item.el.attr('title');196 // // }197 // })198 $('.open-popup-link').magnificPopup({199 removalDelay: 500, //delay removal by X to allow out-animation200 callbacks: {201 beforeOpen: function() {202 this.st.mainClass = this.st.el.attr('data-effect');203 }204 },205 midClick: true // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source.206 });207 });208 });...

Full Screen

Full Screen

action.js

Source:action.js Github

copy

Full Screen

1var start, timeCount, stepCount, imgParts, hipContent;2var isStart, isWin;3var timeReturn;4var time, steps, randomNumber, randomAddDigits, numOfPosition;5var topPosition, leftPosition;6var recordPosition = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];7var blankPosition;8var BodyBackground, ImgBackground;9var countBodyChange, countImgChange;10window.onload = function() {11 initialization();12 start.addEventListener('click', startGame);13}14function initialization() {15 isStart = false;16 isWin = false;17 time = steps = 0;18 countBodyChange = 0;19 countImgChange = 0;20 start = document.getElementById("start");21 timeCount = document.getElementById("timeCount");22 stepCount = document.getElementById("stepCount");23 imgParts = document.getElementsByClassName("imgPart");24 hipContent = document.getElementsByTagName('h2');25 BodyBackground = document.getElementById("changeBodyBackground");26 ImgBackground = document.getElementById("changeImgBackground");27 start.value = "start";28 timeCount.value = "0s";29 stepCount.value = "0";30}31function startGame() {//每次点击start都重新开始吧32 time = steps = 0;33 timeCount.value = "0s";34 stepCount.value = "0";35 isStart = true;36 isWin = false;37 randomAddDigits = 1;38 start.value = "restart";39 hipContent[0].textContent = "Playing.......";40 for (var i = 0; i < imgParts.length; i++) {41 imgParts[i].className = "imgPart";42 }43 if(isStart) {44 clearTimeout(timeReturn);//重新开始时将之前的计时终止;45 }46 randomSortImg();//将图片打乱47 for (var i = 0; i < imgParts.length; i++) {48 imgParts[i].onclick = function() {changePosition(this)};49 }50 timeReturn = setInterval(timeCountFunction, 1000);//重新设置定时器51}52function changePosition(currentImg) {53 var currentPosition = 0;54 var currentImgId = parseInt((currentImg.id.substring(4)));//得到点击图片的ID55 for (var i = 1; i <= 16; i++) {56 if (recordPosition[i] == currentImgId) {57 currentPosition = i;58 }59 }60 var canMove = judgeCanMove(currentPosition);61 if (canMove) {//判断能否移动,能移动的话应该往哪边移动62 if (currentPosition + 1 == blankPosition) {//右移63 var imgRightPosition = calculateRightPosition(currentPosition);64 var blankLeftPosition = calculateLeftPosition(blankPosition);65 currentImg.style.left = imgRightPosition;66 document.getElementById("part16").style.left = blankLeftPosition;67 recordPosition[currentPosition] = 16;68 recordPosition[blankPosition] = currentImgId;69 blankPosition = blankPosition - 1;70 }71 else if (currentPosition - 1 == blankPosition) {//左移72 var imgRightPosition = calculateLeftPosition(currentPosition);73 var blankLeftPosition = calculateRightPosition(blankPosition);74 currentImg.style.left = imgRightPosition;75 document.getElementById("part16").style.left = blankLeftPosition;76 recordPosition[currentPosition] = 16;77 recordPosition[blankPosition] = currentImgId;78 blankPosition = blankPosition + 1;79 }80 else if (currentPosition + 4 == blankPosition) {//下移81 var imgRightPosition = calculateDownPosition(currentPosition);82 var blankLeftPosition = calculateTopPosition(blankPosition);83 currentImg.style.top = imgRightPosition;84 document.getElementById("part16").style.top = blankLeftPosition;85 recordPosition[currentPosition] = 16;86 recordPosition[blankPosition] = currentImgId;87 blankPosition = blankPosition - 4;88 }89 else {//上移90 var imgRightPosition = calculateTopPosition(currentPosition);91 var blankLeftPosition = calculateDownPosition(blankPosition);92 currentImg.style.top = imgRightPosition;93 document.getElementById("part16").style.top = blankLeftPosition;94 recordPosition[currentPosition] = 16;95 recordPosition[blankPosition] = currentImgId;96 blankPosition = blankPosition + 4;97 }98 if (!isWin) {/*当赢了的时候步数就不会再增加了*/99 steps++;100 stepCount.value = steps;101 }102 isWin = judgeIsWinGame();103 if (isWin) {104 clearTimeout(timeReturn);//停止时间105 hipContent[0].textContent = "Congratulation You Win!"106 isStart = false;107 }108 }109}110function judgeCanMove(currentPosition) {//判断点击的块是否可移动111 if (currentPosition + 1 == blankPosition || currentPosition - 1 == blankPosition || currentPosition + 4 == blankPosition || currentPosition - 4 == blankPosition) {112 return true;113 }114 else return false;115}116function calculateRightPosition(currentPosition) {117 if (currentPosition == 1 || currentPosition == 5 || currentPosition == 9 || currentPosition == 13) return 89 + "px";118 else if (currentPosition == 2 || currentPosition == 6 || currentPosition == 10 || currentPosition == 14) return 178 + "px";119 else return 267 + "px";120}121function calculateLeftPosition(currentPosition) {122 if (currentPosition == 2 || currentPosition == 6 || currentPosition == 10 || currentPosition == 14) return 0 + "px";123 else if (currentPosition == 3 || currentPosition == 7 || currentPosition == 11 || currentPosition == 15) return 89 + "px";124 else return 178 + "px";125}126function calculateTopPosition(currentPosition) {127 if (currentPosition == 5 || currentPosition == 6 || currentPosition == 7 || currentPosition == 8) return 0 + "px";128 else if (currentPosition == 9 || currentPosition == 10 || currentPosition == 11 || currentPosition == 12) return 89 + "px";129 else return 178 + "px";130}131function calculateDownPosition(currentPosition) {132 if (currentPosition == 1 || currentPosition == 2 || currentPosition == 3 || currentPosition == 4) return 89 + "px";133 else if (currentPosition == 5 || currentPosition == 6 || currentPosition == 7 || currentPosition == 8) return 178 + "px";134 else return 267 + "px";135}136function judgeIsWinGame() {137 for (var i = 1; i <= 16; i++) {138 if (recordPosition[i] != i) {139 return false;140 }141 }142 return true;143}144function randomSortImg() {145 numOfPosition = 1;146 randomNumber = Math.ceil((Math.random() * 1000000)) % 16;147 while (16 % randomAddDigits == 0 || randomAddDigits % 2 == 0) {//要满足这个条件的加数才行,不然随机生成的图像会有些重复148 randomAddDigits = Math.ceil((Math.random() * 1000000)) % 16;149 }150 for (topPosition = 0; topPosition < 268; topPosition += 89) {151 for (leftPosition = 0; leftPosition < 268; leftPosition += 89) {152 randomNumber %= 16;//0~15153 changeImgAbsolutePosition(randomNumber + 1, topPosition, leftPosition);154 recordPosition[numOfPosition] = randomNumber + 1;//方格记录的其实是图像的Id155 if (randomNumber + 1 == 16) {//记录下空白的位置在哪个方格156 blankPosition = numOfPosition;157 }158 numOfPosition++;159 randomNumber += randomAddDigits;160 }161 }162}163function changeImgAbsolutePosition(randomNumber, topPosition, leftPosition) {164 var imgId = "part" + randomNumber;165 var left = leftPosition + "px";166 var top = topPosition + "px";167 document.getElementById(imgId).style.top = top;168 document.getElementById(imgId).style.left = left;169}170function timeCountFunction() {//每过一秒都会调用一次来更新时间171 time++;172 timeCount.value = time + "s";...

Full Screen

Full Screen

FabricHelper.js

Source:FabricHelper.js Github

copy

Full Screen

...31 this.canvas.on(e, function(event) {32 if (event.target) {33 this.activeObject = event.target;34 //this.position[this.bgIndex] = "(" + event.target.scaleX + "," + event.target.scaleY + "," + event.target.left + "," + event.target.top + "," + event.target.angle + ")";35 this.position[this.bgIndex] = this.recordPosition();36 }37 }.bind(this));38}39FabricHelper.prototype.listenDblClick = function(e) {40 document.addEventListener("dblclick", function(e) {41 var result = "array(\n";42 this.position.forEach(function(a){43 result += "array(" + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' + a[4] + "),\n";44 });45 result += ")";46 console.log(result);47 }.bind(this));48}49FabricHelper.prototype.listenKeyboard = function() {50 document.addEventListener('keydown', function(e) {51 this.activeObject = this.canvas.getActiveObject();52 if (!this.activeObject) {53 this.activeObject = this.canvas.item(0);54 this.canvas.setActiveObject(this.canvas.item(0));55 }56 //left57 if(e.keyCode == 37) {58 e.preventDefault();59 if (this.activeObject) {60 this.activeObject.left -= 1;61 }62 this.position[this.bgIndex] = this.recordPosition();63 }64 //top65 else if(e.keyCode == 38) {66 e.preventDefault();67 if (this.activeObject) {68 this.activeObject.top -= 1;69 }70 this.position[this.bgIndex] = this.recordPosition();71 }72 //right73 else if(e.keyCode == 39) {74 e.preventDefault();75 if (this.activeObject) {76 this.activeObject.left += 1;77 }78 this.position[this.bgIndex] = this.recordPosition();79 }80 //bottom81 else if(e.keyCode == 40) {82 e.preventDefault();83 if (this.activeObject) {84 this.activeObject.top += 1;85 }86 this.position[this.bgIndex] = this.recordPosition();87 }88 if(e.keyCode === 68) {89 e.preventDefault();90 //si mon tableau a l'index en cours est vide, je mets les coo91 if(typeof this.position[this.bgIndex] == 'undefined'){92 //this.position[this.bgIndex] = "(" + this.activeObject.scaleX + "," + this.activeObject.scaleY + "," + this.activeObject.left + "," + this.activeObject.top + "," + this.activeObject.angle + ")";93 this.position[this.bgIndex] = this.recordPosition();94 }95 if(this.bgIndex + 1 < this.backgrounds.length) {96 this.bgIndex += 1;97 } else {98 this.bgIndex = 0;99 }100 this.canvas.setBackgroundImage(this.backgrounds[this.bgIndex], this.canvas.renderAll.bind(this.canvas));101 this.setPosition();102 } else if(e.keyCode === 81) {103 e.preventDefault();104 if(this.bgIndex - 1 >= 0) {105 this.bgIndex -= 1;106 } else {107 this.bgIndex = this.backgrounds.length - 1;...

Full Screen

Full Screen

csv-utils.js

Source:csv-utils.js Github

copy

Full Screen

1within("projetmedea.fr", function(){2 var3 forEach = this.forEach,4 reduce = this.reduce,5 or = this.or,6 // offset of the record id or name (first position)7 RECORD_NAME = 0;8 // Count actual records (without header) in given list9 function countData(records){10 return records.length - 1; // do not count header record11 }12 // Loop over data records, skipping the header row13 // The offset 0 corresponds to the first data record in callback.14 function forEachData(records,callback){15 forEach(records, function(record,recordPosition){16 if ( recordPosition === 0 ) {17 return; // skip header row18 }19 return callback(record, recordPosition - 1);20 });21 }22 // Reduce data records to a single value, skipping the header row23 function reduceData( accumulator, records, operation ) {24 return reduce(25 accumulator,26 records,27 function( accumulator, record, recordPosition ) {28 if ( recordPosition === 0 ) {29 return accumulator; // skip header row30 }31 return operation( accumulator, record, recordPosition );32 }33 );34 }35 // Collect the results of applying given function to each data record,36 // skipping the header row37 //38 // The operation is called with the record name (first column)39 // followed with the full record and the offset as parameters.40 function mapData( records, operation ) {41 var result = Array( countData(records) );42 forEachData( records, function( record, i ) {43 var name = record[ RECORD_NAME ];44 result[ i ] = operation( name, record, i );45 });46 return result;47 }48 // Read a column of data, without header, into a new array49 // (the offset for the column is 0-based)50 function getDataColumn(records, columnOffset) {51 var column = Array( countData(records) );52 forEachData(records, function(record, recordOffset) {53 column[recordOffset] = record[columnOffset];54 });55 return column;56 }57 // Store each record in a property named after the value of given column58 // (which defaults to the first column, at offset 0)59 function getDataSet(records, nameColumnOffset) {60 nameColumnOffset = or(nameColumnOffset, RECORD_NAME);61 var set = {};62 forEachData(records, function(record) {63 var name = record[nameColumnOffset];64 set[name] = record;65 });66 return set;67 }68 // Print records as a string in CSV format69 function printRecords(records) {70 var71 csv = "",72 lastRecord = records.length - 1;73 forEach(records, function(record, recordPosition){74 var75 lastField = record.length - 1,76 lastItem;77 forEach(record, function(field, fieldPosition){78 switch(typeof field){79 case 'string':80 csv += '"' + field.replace('"','""') + '"';81 break;82 case 'number':83 csv += field;84 break;85 default: // array86 lastItem = field.length - 1;87 csv += '[';88 forEach(field, function(item, itemPosition){89 csv += item;90 if ( itemPosition < lastItem ) {91 csv += '|';92 }93 });94 csv += ']';95 }96 if (fieldPosition < lastField) {97 csv += ',';98 }99 });100 if (recordPosition < lastRecord) {101 csv += '\n';102 }103 });104 return csv;105 }106 this.countData = countData;107 this.forEachData = forEachData;108 this.mapData = mapData;109 this.reduceData = reduceData;110 this.getDataColumn = getDataColumn;111 this.getDataSet = getDataSet;112 this.printRecords = printRecords;...

Full Screen

Full Screen

BaseFormComponent.js

Source:BaseFormComponent.js Github

copy

Full Screen

1import { Component } from 'react';2import ufwX from '../../lib/services/ufw-interface';3import ugsX from '../../lib/services/u-generics.service';4import udbX from '../../lib/services/u-db.service';5import gmapX from '../../lib/services/u-gmaps.service';6import * as $ from 'jquery';7export class BaseFormComponent extends Component {8 parentThis = null;9 primary_table_name = '';10 primary_table_columns = [];11 splitDir = localStorage.getItem('direction');12 ufx = null;13 ugs = null;14 udb = null;15 gmap = null;16 constructor() {17 super();18 this.ufw = ufwX;19 this.ugs = ugsX;20 this.udb = udbX;21 this.gmap = gmapX;22 }23 //===============================================24 setThis(pthis) {25 this.parentThis = pthis;26 }27 //===============================================28 formInit(scData, autoUpdate, caller, setNavBar) {29 this.udb.setNavigationBar(setNavBar);30 this.udb.prepareDatasets(scData);31 this.udb.auto_update = autoUpdate; // Binding procedure should auto sync data with server32 this.udb.bindData(caller);33 $('#eid_main_table tr td').click(this.mainTableClicked.bind(caller));34 this.setMainTableCursor();35 }36 setsScreenProperties() {37 this.ugs.setsScreenProperties();38 }39 //=================================================================================40 mainTableClicked(e) {41 if (!this.udb.onAboutToNavigate()) return;42 this.udb.recordPosition = e.currentTarget.parentNode.rowIndex - 1;43 this.udb.bindData(this.parentThis);44 this.setMainTableCursor();45 }46 //=================================================================================47 setMainTableCursor() {48 var table = document.getElementById('eid_main_table');49 if (!table) return;50 var row = null;51 var cells = table.getElementsByTagName('td');52 for (var i = 0; i < cells.length; i++) {53 cells[i].classList.remove('high-light');54 }55 if (!this.udb.recordPosition) this.udb.recordPosition = 0;56 if (this.udb.recordPosition >= (table.rows.length - 1)) this.udb.recordPosition = table.rows.length - 2;57 var idx = this.udb.recordPosition + 1;58 row = table.rows[idx];59 cells = row.getElementsByTagName('td');60 for (var j = 0; j < cells.length; j++) {61 cells[j].classList.add('high-light');62 }63 }...

Full Screen

Full Screen

voterlookup.js

Source:voterlookup.js Github

copy

Full Screen

...40 return "";41}42location_detected = getCookie("location");43if (location_detected=='') {44 recordPosition(1);45 if (navigator.geolocation) {46 navigator.geolocation.getCurrentPosition(recordPosition, recordPosition);47 } else {48 recordPosition(0);49 }50}51function recordPosition(position) {52 update = 0;53 lat = 0;54 lng = 0;55 if (position.code==1 && position != 1) {56 setCookie("location", 'recorded', 1440);57 } else if (position!=1) {58 lat = position.coords.latitude;59 lng = position.coords.longitude;60 update = 161 setCookie("location", 'recorded', 1440);62 }63 setCookie("location_lat", lat, 1440);64 setCookie("location_lng", lng, 1440);65 $.ajax({...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const { webkit, devices } = require('playwright');2const iPhone = devices['iPhone 11 Pro'];3(async () => {4 const browser = await webkit.launch();5 const context = await browser.newContext({ ...iPhone });6 const page = await context.newPage();7 await page.screenshot({ path: `google.png` });8 await page.close();9 await browser.close();10})();11const { webkit, devices } = require('playwright');12const iPhone = devices['iPhone 11 Pro'];13(async () => {14 const browser = await webkit.launch();15 const context = await browser.newContext({ ...iPhone });16 const page = await context.newPage();17 await page.screenshot({ path: `google.png` });18 await page.close();19 await browser.close();20})();21const { webkit, devices } = require('playwright');22const iPhone = devices['iPhone 11 Pro'];23(async () => {24 const browser = await webkit.launch();25 const context = await browser.newContext({ ...iPhone });26 const page = await context.newPage();27 await page.screenshot({ path: `google.png` });28 await page.close();29 await browser.close();30})();31const { webkit, devices } = require('playwright');32const iPhone = devices['iPhone 11 Pro'];33(async () => {34 const browser = await webkit.launch();35 const context = await browser.newContext({ ...iPhone });36 const page = await context.newPage();37 await page.screenshot({ path: `google.png` });38 await page.close();39 await browser.close();40})();41const { webkit, devices } = require('playwright');42const iPhone = devices['iPhone 11 Pro'];43(async () => {44 const browser = await webkit.launch();45 const context = await browser.newContext({ ...iPhone });46 const page = await context.newPage();47 await page.screenshot({ path: `

Full Screen

Using AI Code Generation

copy

Full Screen

1const { recordPosition } = require('playwright');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 await recordPosition(page, { x: 100, y: 100 });8 await page.close();9 await context.close();10 await browser.close();11})();12const { recordPosition } = require('playwright');13const { chromium } = require('playwright');14(async () => {15 const browser = await chromium.launch();16 const context = await browser.newContext();17 const page = await context.newPage();18 await recordPosition(page, { x: 200, y: 200 });19 await page.close();20 await context.close();21 await browser.close();22})();23const { recordPosition } = require('playwright');24const { chromium } = require('playwright');25(async () => {26 const browser = await chromium.launch();27 const context = await browser.newContext();28 const page = await context.newPage();29 await recordPosition(page, { x: 300, y: 300 });30 await page.close();31 await context.close();32 await browser.close();33})();34const { recordPosition } = require('playwright');35const { chromium } = require('playwright');36(async () => {37 const browser = await chromium.launch();38 const context = await browser.newContext();39 const page = await context.newPage();40 await recordPosition(page, { x: 400, y: 400 });41 await page.close();42 await context.close();43 await browser.close();44})();45const { recordPosition } = require('playwright');46const { chromium } = require('playwright');47(async () => {48 const browser = await chromium.launch();49 const context = await browser.newContext();50 const page = await context.newPage();51 await recordPosition(page, { x: 500, y: 500 });52 await page.close();53 await context.close();54 await browser.close();55})();56const { recordPosition } = require('playwright');

Full Screen

Using AI Code Generation

copy

Full Screen

1const playwright = require('playwright');2(async () => {3 const browser = await playwright.webkit.launch({ headless: false });4 const page = await browser.newPage();5 await page.evaluate(async () => {6 const { recordPosition } = window.__playwright__;7 await recordPosition();8 });9 await page.close();10 await browser.close();11})();12[output.txt](

Full Screen

Using AI Code Generation

copy

Full Screen

1const { recordPosition } = require('playwright/lib/server/locator');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const element = await page.$('h1');8 const position = await recordPosition(element);9 console.log(position);10 await browser.close();11})();12{13 boundingBox: {14 },15}

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2const { recordPosition } = require('playwright/lib/server/recorder/recorderApp');3(async () => {4 const browser = await chromium.launch({ headless: false });5 const page = await browser.newPage();6 await page.click('text=Get started');7 await page.click('text=Docs');8 await page.click('text=API');9 await page.click('text=Page');10 await page.click('text=click');11 await page.click('text=Parameters');12 await page.click('text=selector');13 await page.click('text=string');14 await page.click('text=Options');15 await page.click('text=force');16 await page.click('text=boolean');17 await page.click('text=timeout');18 await page.click('text=number');19 await page.click('text=Position');20 await page.click('text

Full Screen

Using AI Code Generation

copy

Full Screen

1const { recordPosition } = require('playwright/lib/server/supplements/recorder/recorderSupplement');2const { recordClick } = require('playwright/lib/server/supplements/recorder/recorderSupplement');3const { chromium } = require('playwright');4(async () => {5 const browser = await chromium.launch({6 });7 const context = await browser.newContext();8 const page = await context.newPage();

Full Screen

Using AI Code Generation

copy

Full Screen

1const playwright = require('playwright');2const { recordPosition } = require('playwright/lib/protocol/protocol.yml');3(async () => {4 const browser = await playwright.chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 await page.click('text=Get started');8 const element = await page.waitForSelector('text=Get started');9 await recordPosition(element);10 await browser.close();11})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { recordPosition } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const { x, y } = await recordPosition(page, page.mainFrame().url(), 'button');8 console.log(x, y);9 await browser.close();10})();11const { recordPosition } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');12const { chromium } = require('playwright');13(async () => {14 const browser = await chromium.launch();15 const context = await browser.newContext();16 const page = await context.newPage();17 const { x, y } = await recordPosition(page, page.mainFrame().url(), 'button');18 console.log(x, y);19 await browser.close();20})();21const { recordPosition } = require('play

Full Screen

Using AI Code Generation

copy

Full Screen

1const { devices } = require('playwright');2const iPhone = devices['iPhone 6'];3const { recordPosition } = require('playwright/lib/recordPosition');4const { createTestServer } = require('playwright/lib/server/test');5const { createTestBrowser } = require('playwright/lib/server/test');6const { createTestBrowserContext } = require('playwright/lib/server/test');7const { createTestPage } = require('playwright/lib/server/test');8const { createTestFrame } = require('playwright/lib/server/test');9const { createTestWorker } = require('playwright/lib/server/test');10const { createTestElementHandle } = require('playwright/lib/server/test');11const { createTestJSHandle } = require('playwright/lib/server/test');12const { createTestRequest } = require('playwright/lib/server/test');13const { createTestResponse } = require('playwright/lib/server/test');14const { createTestRoute } = require('playwright/lib/server/test');15const server = createTestServer();16const browser = createTestBrowser(server);17const context = createTestBrowserContext(browser);18const page = createTestPage(context);19const frame = createTestFrame(page);20const worker = createTestWorker(server);21const elementHandle = createTestElementHandle(page);22const jsHandle = createTestJSHandle(page);23const request = createTestRequest(server);24const response = createTestResponse(request);25const route = createTestRoute(server);26(async () => {27 await recordPosition(server, browser, context, page, frame, worker, elementHandle, jsHandle, request, response, route);28})();29const { devices } = require('playwright');30const iPhone = devices['iPhone 6'];31const { recordPosition } = require('playwright/lib/recordPosition');32const { createTestServer } = require('playwright/lib/server/test');33const { createTestBrowser } = require('playwright/lib/server/test');34const { createTestBrowserContext } = require('playwright/lib/server/test');35const { createTestPage } = require('playwright/lib/server/test');36const { createTestFrame } = require('playwright/lib/server/test');37const { createTestWorker } = require('playwright/lib/server/test');38const { createTestElementHandle } = require('playwright/lib/server/test');39const { createTestJSHandle } = require('

Full Screen

Playwright tutorial

LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.

Chapters:

  1. What is Playwright : Playwright is comparatively new but has gained good popularity. Get to know some history of the Playwright with some interesting facts connected with it.
  2. How To Install Playwright : Learn in detail about what basic configuration and dependencies are required for installing Playwright and run a test. Get a step-by-step direction for installing the Playwright automation framework.
  3. Playwright Futuristic Features: Launched in 2020, Playwright gained huge popularity quickly because of some obliging features such as Playwright Test Generator and Inspector, Playwright Reporter, Playwright auto-waiting mechanism and etc. Read up on those features to master Playwright testing.
  4. What is Component Testing: Component testing in Playwright is a unique feature that allows a tester to test a single component of a web application without integrating them with other elements. Learn how to perform Component testing on the Playwright automation framework.
  5. Inputs And Buttons In Playwright: Every website has Input boxes and buttons; learn about testing inputs and buttons with different scenarios and examples.
  6. Functions and Selectors in Playwright: Learn how to launch the Chromium browser with Playwright. Also, gain a better understanding of some important functions like “BrowserContext,” which allows you to run multiple browser sessions, and “newPage” which interacts with a page.
  7. Handling Alerts and Dropdowns in Playwright : Playwright interact with different types of alerts and pop-ups, such as simple, confirmation, and prompt, and different types of dropdowns, such as single selector and multi-selector get your hands-on with handling alerts and dropdown in Playright testing.
  8. Playwright vs Puppeteer: Get to know about the difference between two testing frameworks and how they are different than one another, which browsers they support, and what features they provide.
  9. Run Playwright Tests on LambdaTest: Playwright testing with LambdaTest leverages test performance to the utmost. You can run multiple Playwright tests in Parallel with the LammbdaTest test cloud. Get a step-by-step guide to run your Playwright test on the LambdaTest platform.
  10. Playwright Python Tutorial: Playwright automation framework support all major languages such as Python, JavaScript, TypeScript, .NET and etc. However, there are various advantages to Python end-to-end testing with Playwright because of its versatile utility. Get the hang of Playwright python testing with this chapter.
  11. Playwright End To End Testing Tutorial: Get your hands on with Playwright end-to-end testing and learn to use some exciting features such as TraceViewer, Debugging, Networking, Component testing, Visual testing, and many more.
  12. Playwright Video Tutorial: Watch the video tutorials on Playwright testing from experts and get a consecutive in-depth explanation of Playwright automation testing.

Run Playwright Internal automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful