How to use applyOptions method in Playwright Internal

Best JavaScript code snippet using playwright-internal

constructCriteria.js

Source:constructCriteria.js Github

copy

Full Screen

1import React from "react";2import { useState } from "react";3import { useEffect } from "react";4import Grid from "@material-ui/core/Grid";5import Controls from "./../../controls/Controls";6import Button from "@material-ui/core/Button";7import auth from "../../auth/auth-helper";8import Typography from "@material-ui/core/Typography";9import Icon from "@material-ui/core/Icon";10import { makeStyles } from "@material-ui/core/styles";11import { useCriteria, useCriteriaDispatch } from "../../contexts/CriteriaContext";12import { useAccess, } from "../../contexts/AccessContext";13import Popup from "../../components/shared/Popup";14import {myClassOptions,subjectOptions,ageRangeOptions,difficultyLevelOptions,categoryOptions} from "../../lookupOptions/CriteriaOptions"15import ApplyOptionsForm from "../../components/shared/ApplyOptionsForm"16import Notification from "../../components/shared/Notification";17const useStyles = makeStyles((theme) => ({18 root: {19 flexGrow: 1,20 marginTop: theme.spacing(2),21 margin: theme.spacing(2),22 },23 paper: {24 padding: theme.spacing(2),25 textAlign: "center",26 color: theme.palette.text.secondary,27 },28 error: {29 verticalAlign: "middle",30 },31 title: {32 marginTop: theme.spacing(2),33 color: theme.palette.openTitle,34 },35 textField: {36 marginLeft: theme.spacing(2),37 marginRight: theme.spacing(2),38 defaultValue: "Small",39 variant: "outlined",40 size: "small",41 },42 container: {43 paddingTop: theme.spacing(1),44 paddingBottom: theme.spacing(1),45 outerColumn: {46 borderRight: "1px solid grey",47 borderBottom: "1px solid grey",48 borderLeft: "1px solid grey"49 },50 centerColumn: {51 borderBottom: "1px solid grey"52 }53 },54 gridWrapper: {55 border: "1px solid grey",56 display: "grid",57 backgroundColor: "grey",58 gridRowGap: 1,59 gridColumnGap: 1,60 gridTemplateAreas: `61 "title title title"62 "a1 a2 a3"63 "b1 b2 b3"64 "c1 c2 c3"65 `,66 gridTemplateColumns: "repeat(3, minmax(0, 1fr))",67 "& > *": {68 backgroundColor: "white"69 }70 },71 submit: {72 marginLeft: theme.spacing(4),73 marginRight: theme.spacing(2),74 marginBottom: theme.spacing(2),75 direction: "column",76 position: "center",77 variant: "outlined",78 size: "small",79 },80 input: {81 display: "none",82 padding: "10px 14px",83 },84 filename: {85 marginLeft: "2px",86 },87}));88const Container = (props) => (89 <Grid container justify="space-around" {...props} />90);91const Item = (props) => <Grid item xs={12} {...props} />;92export default function ConstructCriteria(props) {93 const {94 selected,95 setSelected,96 updateConstructLineItem,97 constructLineItems,98 checkCurrentCriteria,99 okToUpdate,100 } = props;101 const classes = useStyles();102 const currentCriteria = useCriteria();103 const currentAccess = useAccess();104 const [openPopup, setOpenPopup] = useState(false);105 const [applyOptions, setApplyOptions] = useState({106 isUpdateListing: true,107 isUpdateSelectedRecords: false,108 isUpdateAllListedRecords: false,109 });110 const [notify, setNotify] = useState({111 isOpen: false,112 message: "",113 type: "",114 });115 const [values, setValues] = useState({116 myClass: currentCriteria.myClass ? currentCriteria.myClass : "", 117 category: currentCriteria.category ? currentCriteria.category : "", 118 subject: currentCriteria.subject ? currentCriteria.subject : "", 119 difficultyLevel: currentCriteria.difficultyLevel120 ? currentCriteria.difficultyLevel121 : 7, 122 ageRange: currentCriteria.ageRange ? currentCriteria.ageRange : 2, 123 topic: currentCriteria.topic ? currentCriteria.topic : "",124 });125 const [errors, setErrors] = useState({});126 const handleInputChange = e => {127 const name = e.target.name;128 const value = e.target.value;129 setValues({130 ...values,131 [name]: value132 })133 }134 useEffect(() => {135 const abortController = new AbortController();136 const signal = abortController.signal;137 console.log(138 "constructCriteria - inside useEffect() to reset values to currentCriteria = ", currentCriteria139 );140 141 if (currentCriteria != undefined && currentCriteria != null)142 {143 setValues({144 myClass: currentCriteria.myClass,145 category: currentCriteria.category,146 subject: currentCriteria.subject,147 difficultyLevel: currentCriteria.difficultyLevel,148 ageRange: currentCriteria.ageRange,149 topic: currentCriteria.topic,150 });151 }152 return function cleanup() {153 abortController.abort();154 };155 156 }, [currentCriteria]);157 useEffect(() => {158 const abortController = new AbortController();159 const signal = abortController.signal;160 console.log(161 "constructCriteria - after return from popup useEffect applyOptions.isUpdateListing = ", applyOptions.isUpdateListing );162 console.log(163 "constructCriteria - after return from popup useEffect applyOptions.isUpdateSelectedRecords = ", applyOptions.isUpdateSelectedRecords );164 console.log(165 "constructCriteria - after return from popup useEffect applyOptions.isUpdateAllListedRecords = ", applyOptions.isUpdateAllListedRecords );166 console.log("constructCriteria - after return from popup useEffect Criteria values = ", values );167 if (values != undefined && values != null )168 {169 if (170 ((values.myClass != null &&171 values.category != null &&172 values.subject != null &&173 values.difficultyLevel != null &&174 values.ageRange != null ) 175 &&176 (177 values.myClass.length != 0 &&178 values.category.length != 0 &&179 values.subject.length != 0 &&180 values.difficultyLevel.length != 0 &&181 values.ageRange.length != 0 ))182 )183 {184 if (applyOptions.isUpdateAllListedRecords === true)185 {186 console.log("constructCriteria - applyOptions.isUpdateAllListedRecords === true" );187 updateCriteriaOfAllConstructLineItemsInList();188 } else if (applyOptions.isUpdateSelectedRecords === true)189 {190 console.log("constructCriteria -applyOptions.isUpdateSelectedRecords === true" );191 updateCriteriaOfSelectedConstructLineItems();192 } 193 } else194 {195 if (applyOptions.isUpdateAllListedRecords === true || applyOptions.isUpdateSelectedRecords === true) 196 {197 setNotify({198 isOpen: true,199 message: "No Updates made - All Criteria must be defined to update Records!",200 type: "error",201 });202 }203 }204 }205 checkCurrentCriteria(values);206 console.log(207 "constructCriteria - after return from popup useEffect applyOptions.isUpdateListing = ", applyOptions.isUpdateListing );208 return function cleanup() {209 abortController.abort();210 };211 }, [applyOptions]);212 const findMatchingIndex = (search_id) => {213 var index = -1;214 console.log("constructCriteria - search_id = ", search_id);215 for (var i = 0; i < constructLineItems.length; i++) {216 console.log(217 "constructCriteria - constructLineItems[i]._id = ",218 constructLineItems[i]._id219 );220 if (constructLineItems[i]._id == search_id) {221 index = i;222 break;223 }224 }225 return index;226 };227 const updateCriteriaOfAllConstructLineItemsInList = () => {228 console.log(229 "updateCriteriaOfAllConstructLineItemsInList - Inside updateCriteriaOfAllConstructLineItemsInList + before loop to update records");230 console.log(231 "updateCriteriaOfSelectedConstructLineItems - constructLineItems = ", constructLineItems)232 const lastIndexToUpdate = constructLineItems.length -1;233 for (let i = 0; i < constructLineItems.length; i++) {234 updateConstructLineItem(i, false, lastIndexToUpdate, values, currentAccess);235 }236 };237 238 const updateCriteriaOfSelectedConstructLineItems = () =>239 {240 console.log(241 "updateCriteriaOfSelectedConstructLineItems - Inside updateCriteriaOfSelectedConstructLineItems + before loop to update records");242 console.log(243 "updateCriteriaOfSelectedConstructLineItems - selected = ", selected)244 const lastIndexToUpdate = selected.length-1;245 selected.forEach(id => 246 {247 console.log(id)248 let indexToUpdate = findMatchingIndex(id);249 if (indexToUpdate >=0)250 {251 updateConstructLineItem(indexToUpdate,false, lastIndexToUpdate, values, currentAccess);252 } 253 });254 setSelected([]);255 }256 const clickSubmit = () => {257 console.log(258 "constructCriteria - submit clicked before currentCriteria values = ",259 values260 );261 setOpenPopup(true);262 };263 return (264 <>265 <div className={classes.root}>266 <Container spacing={2} justify="center" className={classes.container}>267 <Item xs={12}>268 <div>Filter Criteria (Entry Tags)</div>269 </Item>270 <Item item xs={12} >271 <Controls.Select272 name="myClass"273 label="Class"274 classes={classes}275 value={values.myClass}276 onChange={handleInputChange}277 options={myClassOptions}278 error={errors.myClass}279 />280 </Item>281 <Item item xs={12} >282 <Controls.Select283 name="category"284 label="Category"285 value={values.category}286 onChange={handleInputChange}287 options={categoryOptions}288 error={errors.category}289 />290 </Item>291 <Item item xs={12} >292 <Controls.Select293 name="subject"294 label="Subject"295 value={values.subject}296 onChange={handleInputChange}297 options={subjectOptions}298 error={errors.subject}299 />300 </Item>301 <Item item xs={12} >302 <Controls.Select303 name="difficultyLevel"304 label="Difficulty Level"305 value={values.difficultyLevel}306 onChange={handleInputChange}307 options={difficultyLevelOptions}308 error={errors.difficultyLevel}309 />310 </Item>311 <Item item xs={12} >312 <Controls.Select313 name="ageRange"314 label="Age Range"315 value={values.ageRange}316 onChange={handleInputChange}317 options={ageRangeOptions}318 error={errors.ageRange}319 />320 </Item>321 <Item item xs={12}>322 <Controls.Input323 name="topic"324 label="Topic"325 value={values.topic}326 onChange={handleInputChange}327 error={errors.topic}328 />329 </Item>330 <Item xs={12}>331 <Button332 variant="contained"333 size="large"334 color="secondary"335 onClick={clickSubmit}336 className={classes.submit}337 disabled = {okToUpdate?false:true}338 >339 Apply Criteria340 </Button>341 342 </Item>343 <Item xs={12}>344 {values.error && (345 <Typography component="p" color="error">346 <Icon color="error" className={classes.error}>347 error348 </Icon>349 {values.error}350 </Typography>351 )}352 </Item>353 </Container>354 </div>355 <Popup356 title="Check boxes to indicate how to Apply new criteria - Disable options as pre-selected"357 openPopup={openPopup}358 setOpenPopup={setOpenPopup}359 >360 <ApplyOptionsForm361 applyOptions={applyOptions}362 setApplyOptions={setApplyOptions}363 openPopup={openPopup}364 setOpenPopup={setOpenPopup}365 />366 </Popup>367 <Notification notify={notify} setNotify={setNotify} />368 </>369 );...

Full Screen

Full Screen

frameworkCriteria.js

Source:frameworkCriteria.js Github

copy

Full Screen

1import React from "react";2import { useState } from "react";3import { useEffect } from "react";4import Grid from "@material-ui/core/Grid";5import Controls from "./../../controls/Controls";6import Button from "@material-ui/core/Button";7import auth from "../../auth/auth-helper";8import Typography from "@material-ui/core/Typography";9import Icon from "@material-ui/core/Icon";10import { makeStyles } from "@material-ui/core/styles";11import { useCriteria } from "../../contexts/CriteriaContext";12import { useAccess, } from "../../contexts/AccessContext";13import Popup from "../../components/shared/Popup";14import {myClassOptions,subjectOptions,ageRangeOptions,difficultyLevelOptions,categoryOptions} from "../../lookupOptions/CriteriaOptions"15import ApplyOptionsForm from "../../components/shared/ApplyOptionsForm"16import Notification from "../../components/shared/Notification";17const useStyles = makeStyles((theme) => ({18 root: {19 flexGrow: 1,20 marginTop: theme.spacing(2),21 margin: theme.spacing(2),22 },23 error: {24 verticalAlign: "middle",25 },26 container: {27 paddingTop: theme.spacing(1),28 paddingBottom: theme.spacing(1),29 outerColumn: {30 borderRight: "1px solid grey",31 borderBottom: "1px solid grey",32 borderLeft: "1px solid grey"33 },34 centerColumn: {35 borderBottom: "1px solid grey"36 }37 },38 39 submit: {40 marginLeft: theme.spacing(4),41 marginRight: theme.spacing(2),42 marginBottom: theme.spacing(2),43 direction: "column",44 position: "center",45 variant: "outlined",46 size: "small",47 },48}));49const Container = (props) => (50 <Grid container justify="space-around" {...props} />51);52const Item = (props) => <Grid item xs={12} {...props} />;53export default function FrameworkCriteria(props) {54 const {55 selected,56 setSelected,57 updateFrameworkLineItem,58 frameworkLineItems,59 checkCurrentCriteria,60 okToUpdate,61 } = props;62 63 const classes = useStyles();64 const currentCriteria = useCriteria();65 const currentAccess = useAccess();66 const [openPopup, setOpenPopup] = useState(false);67 const [applyOptions, setApplyOptions] = useState({68 isUpdateListing: true,69 isUpdateSelectedRecords: false,70 isUpdateAllListedRecords: false,71 });72 const jwt = auth.isAuthenticated();73 const userId = jwt.user._id;74 const [notify, setNotify] = useState({75 isOpen: false,76 message: "",77 type: "",78 });79 const [values, setValues] = useState({80 myClass: currentCriteria.myClass ? currentCriteria.myClass : "Academic", //"Comedy",81 category: currentCriteria.category ? currentCriteria.category : "Mixed", //"Basic Reading",82 subject: currentCriteria.subject ? currentCriteria.subject : "Other", //"Reading",83 difficultyLevel: currentCriteria.difficultyLevel84 ? currentCriteria.difficultyLevel85 : 27, //"General",86 ageRange: currentCriteria.ageRange ? currentCriteria.ageRange : 6, //"All Ages",87 topic: currentCriteria.topic ? currentCriteria.topic : "",88 });89 const [errors, setErrors] = useState({});90 const handleInputChange = e => {91 const name = e.target.name;92 const value = e.target.value;93 setValues({94 ...values,95 [name]: value96 })97 }98 useEffect(() => {99 const abortController = new AbortController();100 const signal = abortController.signal;101 console.log(102 "frameworkCriteria - inside useEffect() to reset values to currentCriteria = ", currentCriteria103 );104 105 if (currentCriteria != undefined && currentCriteria != null)106 {107 setValues({108 myClass: currentCriteria.myClass,109 category: currentCriteria.category,110 subject: currentCriteria.subject,111 difficultyLevel: currentCriteria.difficultyLevel,112 ageRange: currentCriteria.ageRange,113 topic: currentCriteria.topic,114 });115 }116 return function cleanup() {117 abortController.abort();118 };119 120 }, [currentCriteria]);121 useEffect(() => {122 const abortController = new AbortController();123 const signal = abortController.signal;124 console.log(125 "frameworkCriteria - after return from popup useEffect applyOptions.isUpdateListing = ", applyOptions.isUpdateListing );126 console.log(127 "frameworkCriteria - after return from popup useEffect applyOptions.isUpdateSelectedRecords = ", applyOptions.isUpdateSelectedRecords );128 console.log(129 "frameworkCriteria - after return from popup useEffect applyOptions.isUpdateAllListedRecords = ", applyOptions.isUpdateAllListedRecords );130 console.log("frameworkCriteria - after return from popup useEffect Criteria values = ", values );131 if (values != undefined && values != null )132 {133 if (134 ((values.myClass != null &&135 values.category != null &&136 values.subject != null &&137 values.difficultyLevel != null &&138 values.ageRange != null ) 139 &&140 (141 values.myClass.length != 0 &&142 values.category.length != 0 &&143 values.subject.length != 0 &&144 values.difficultyLevel.length != 0 &&145 values.ageRange.length != 0 ))146 )147 {148 if (applyOptions.isUpdateAllListedRecords === true)149 {150 console.log("frameworkCriteria - applyOptions.isUpdateAllListedRecords === true" );151 updateCriteriaOfAllFrameworkLineItemsInList();152 } else if (applyOptions.isUpdateSelectedRecords === true)153 {154 console.log("frameworkCriteria -applyOptions.isUpdateSelectedRecords === true" );155 updateCriteriaOfSelectedFrameworkLineItems();156 } 157 } else158 {159 if (applyOptions.isUpdateAllListedRecords === true || applyOptions.isUpdateSelectedRecords === true) 160 {161 setNotify({162 isOpen: true,163 message: "No Updates made - All Criteria must be defined to update Records!",164 type: "error",165 });166 }167 }168 }169 checkCurrentCriteria(values);170 console.log(171 "frameworkCriteria - after return from popup useEffect applyOptions.isUpdateListing = ", applyOptions.isUpdateListing );172 return function cleanup() {173 abortController.abort();174 };175 }, [applyOptions]);176 const findMatchingIndex = (search_id) => {177 var index = -1;178 console.log("frameworkCriteria - search_id = ", search_id);179 for (var i = 0; i < frameworkLineItems.length; i++) {180 console.log(181 "frameworkCriteria - frameworkLineItems[i]._id = ",182 frameworkLineItems[i]._id183 );184 if (frameworkLineItems[i]._id == search_id) {185 index = i;186 break;187 }188 }189 return index;190 };191 const updateCriteriaOfAllFrameworkLineItemsInList = () => {192 console.log(193 "updateCriteriaOfAllFrameworkLineItemsInList - Inside updateCriteriaOfAllFrameworkLineItemsInList + before loop to update records");194 console.log(195 "updateCriteriaOfSelectedFrameworkLineItems - frameworkLineItems = ", frameworkLineItems)196 const lastIndexToUpdate = frameworkLineItems.length -1;197 for (let i = 0; i < frameworkLineItems.length; i++) {198 updateFrameworkLineItem(i, false, lastIndexToUpdate, values, currentAccess);199 }200 };201 202 const updateCriteriaOfSelectedFrameworkLineItems = () =>203 {204 console.log(205 "updateCriteriaOfSelectedFrameworkLineItems - Inside updateCriteriaOfSelectedFrameworkLineItems + before loop to update records");206 console.log(207 "updateCriteriaOfSelectedFrameworkLineItems - selected = ", selected)208 const lastIndexToUpdate = selected.length-1;209 selected.forEach(id => 210 {211 console.log(id)212 let indexToUpdate = findMatchingIndex(id);213 if (indexToUpdate >=0)214 {215 updateFrameworkLineItem(indexToUpdate,false, lastIndexToUpdate, values, currentAccess);216 } 217 });218 setSelected([]);219 }220 const clickSubmit = () => {221 console.log(222 "frameworkCriteria - submit clicked before currentCriteria values = ",223 values224 );225 setOpenPopup(true);226 };227 return (228 <>229 <div className={classes.root}>230 <Container spacing={2} justify="center" className={classes.container}>231 <Item xs={12}>232 <div>Filter Criteria (Entry Tags)</div>233 </Item>234 <Item item xs={12} >235 <Controls.Select236 name="myClass"237 label="Class"238 classes={classes}239 value={values.myClass}240 onChange={handleInputChange}241 options={myClassOptions}242 error={errors.myClass}243 />244 </Item>245 <Item item xs={12} >246 <Controls.Select247 name="category"248 label="Category"249 value={values.category}250 onChange={handleInputChange}251 options={categoryOptions}252 error={errors.category}253 />254 </Item>255 <Item item xs={12} >256 <Controls.Select257 name="subject"258 label="Subject"259 value={values.subject}260 onChange={handleInputChange}261 options={subjectOptions}262 error={errors.subject}263 />264 </Item>265 <Item item xs={12} >266 <Controls.Select267 name="difficultyLevel"268 label="Difficulty Level"269 value={values.difficultyLevel}270 onChange={handleInputChange}271 options={difficultyLevelOptions}272 error={errors.difficultyLevel}273 />274 </Item>275 <Item item xs={12} >276 <Controls.Select277 name="ageRange"278 label="Age Range"279 value={values.ageRange}280 onChange={handleInputChange}281 options={ageRangeOptions}282 error={errors.ageRange}283 />284 </Item>285 <Item item xs={12}>286 <Controls.Input287 name="topic"288 label="Topic"289 value={values.topic}290 onChange={handleInputChange}291 error={errors.topic}292 />293 </Item>294 <Item xs={12}> 295 <Controls.Button296 text="Apply Criteria"297 variant="contained"298 color = "secondary"299 onClick={clickSubmit}300 className={classes.submit}301 disabled = {okToUpdate?false:true}302 />303 </Item>304 <Item xs={12}>305 {values.error && (306 <Typography component="p" color="error">307 <Icon color="error" className={classes.error}>308 error309 </Icon>310 {values.error}311 </Typography>312 )}313 </Item>314 </Container>315 </div>316 <Popup317 title="Check boxes to indicate how to Apply new criteria - Disable options as pre-selected"318 openPopup={openPopup}319 setOpenPopup={setOpenPopup}320 >321 <ApplyOptionsForm322 applyOptions={applyOptions}323 setApplyOptions={setApplyOptions}324 openPopup={openPopup}325 setOpenPopup={setOpenPopup}326 />327 </Popup>328 <Notification notify={notify} setNotify={setNotify} />329 </>330 );...

Full Screen

Full Screen

frameworkAccess.js

Source:frameworkAccess.js Github

copy

Full Screen

1import React from "react";2import { useState } from "react";3import { useEffect } from "react";4import Grid from "@material-ui/core/Grid";5import Button from "@material-ui/core/Button";6import Typography from "@material-ui/core/Typography";7import Icon from "@material-ui/core/Icon";8import FormControlLabel from "@material-ui/core/FormControlLabel";9import Checkbox from "@material-ui/core/Checkbox";10import { makeStyles } from "@material-ui/core/styles";11import { useAccess } from "../../contexts/AccessContext";12import Controls from "./../../controls/Controls";13import { useCriteria } from "../../contexts/CriteriaContext";14import Popup from "../../components/shared/Popup";15import ApplyOptionsForm from "../../components/shared/ApplyOptionsForm"16const useStyles = makeStyles((theme) => ({17 root: {18 flexGrow: 1,19 },20 paper: {21 padding: theme.spacing(2),22 textAlign: "center",23 color: theme.palette.text.secondary,24 },25 error: {26 verticalAlign: "middle",27 },28 title: {29 marginTop: theme.spacing(2),30 color: theme.palette.openTitle,31 },32 textField: {33 marginLeft: theme.spacing(2),34 marginRight: theme.spacing(2),35 defaultValue: "Small",36 variant: "outlined",37 size: "small",38 },39 container: {40 paddingTop: theme.spacing(1),41 paddingBottom: theme.spacing(1),42 outerColumn: {43 borderRight: "1px solid grey",44 borderBottom: "1px solid grey",45 borderLeft: "1px solid grey"46 },47 centerColumn: {48 borderBottom: "1px solid grey"49 }50 },51 gridWrapper: {52 border: "1px solid grey",53 display: "grid",54 backgroundColor: "grey",55 gridRowGap: 1,56 gridColumnGap: 1,57 gridTemplateAreas: `58 "title title title"59 "a1 a2 a3"60 "b1 b2 b3"61 "c1 c2 c3"62 `,63 gridTemplateColumns: "repeat(3, minmax(0, 1fr))",64 "& > *": {65 backgroundColor: "white"66 }67 },68 submit: {69 marginLeft: theme.spacing(4),70 marginRight: theme.spacing(2),71 marginBottom: theme.spacing(2),72 direction: "column",73 position: "center",74 variant: "outlined",75 size: "small",76 },77 input: {78 display: "none",79 },80 filename: {81 marginLeft: "2px",82 },83}));84const Container = (props) => (85 <Grid container justify="space-around" {...props} />86);87const Item = (props) => <Grid item xs={12} {...props} />;88export default function FrameworkAccess(props) {89 const {90 selected,91 setSelected,92 updateFrameworkLineItem,93 frameworkLineItems,94 groupsUserOwns,95 setGroupsUserOwns,96 okToUpdate,97 } = props;98 const classes = useStyles();99 const currentAccess = useAccess();100 const currentCriteria = useCriteria();101 const [openPopup, setOpenPopup] = useState(false);102 const [applyOptions, setApplyOptions] = useState({103 isUpdateListing: false,104 isUpdateSelectedRecords: false,105 isUpdateAllListedRecords: false,106 });107 const [values, setValues] = useState({108 keepPrivate: (currentAccess.keepPrivate != undefined && currentAccess.keepPrivate != null) ? currentAccess.keepPrivate : true,109 approvedForPublicUse: (currentAccess.approvedForPublicUse != undefined && currentAccess.approvedForPublicUse != null) ? currentAccess.approvedForPublicUse : false,110 group_id: currentAccess.group_id ? currentAccess.group_id : "",111 });112 console.log("frameworkAccess - right after values set ");113 const handleInputChange = e => {114 const name = e.target.name;115 const value = e.target.value;116 setValues({117 ...values,118 [name]: value119 })120 }121 useEffect(() => {122 const abortController = new AbortController();123 const signal = abortController.signal;124 console.log(125 "FrameworkAccess - inside useEffect()after currentAccess Set "126 );127 if (currentAccess != undefined && currentAccess != null)128 {129 setValues({130 keepPrivate: (currentAccess.keepPrivate != undefined && currentAccess.keepPrivate != null) ? currentAccess.keepPrivate : true,131 approvedForPublicUse: (currentAccess.approvedForPublicUse != undefined && currentAccess.approvedForPublicUse != null) ? currentAccess.approvedForPublicUse : false,132 group_id: currentAccess.group_id ? currentAccess.group_id : "",133 });134 } 135 return function cleanup() {136 abortController.abort();137 };138 }, [currentAccess]);139 useEffect(() => {140 const abortController = new AbortController();141 const signal = abortController.signal;142 console.log(143 "frameworkAccess - after return from popup useEffect applyOptions.isUpdateListing = ", applyOptions.isUpdateListing );144 console.log(145 "frameworkAccess - after return from popup useEffect applyOptions.isUpdateSelectedRecords = ", applyOptions.isUpdateSelectedRecords );146 console.log(147 "frameworkAccess - after return from popup useEffect applyOptions.isUpdateAllListedRecords = ", applyOptions.isUpdateAllListedRecords );148 if (applyOptions.isUpdateAllListedRecords === true)149 {150 console.log("frameworkAccess - applyOptions.isUpdateAllListedRecords === true" );151 updateAccessOfAllFrameworkLineItemsInList();152 } else if (applyOptions.isUpdateSelectedRecords === true)153 {154 console.log("frameworkAccess -applyOptions.isUpdateSelectedRecords === true" );155 updateAccessOfSelectedFrameworkLineItems();156 }157 158 return function cleanup() {159 abortController.abort();160 };161 }, [applyOptions]);162 const findMatchingIndex = (search_id) => {163 var index = -1;164 console.log("frameworkAccess - search_id = ", search_id);165 for (var i = 0; i < frameworkLineItems.length; i++) {166 console.log(167 "frameworkAccess - frameworkLineItems[i]._id = ",168 frameworkLineItems[i]._id169 );170 if (frameworkLineItems[i]._id == search_id) {171 index = i;172 break;173 }174 }175 return index;176 };177 const updateAccessOfAllFrameworkLineItemsInList = () => {178 console.log(179 "updateAccessOfCurrentStatement - Inside updateAccessOfAllFrameworkLineItemsInList + before loop to update records");180 const lastIndexToUpdate = frameworkLineItems.length -1;181 for (let i = 0; i < frameworkLineItems.length; i++) {182 updateFrameworkLineItem(i, false, lastIndexToUpdate, currentCriteria, values);183 }184 };185 186 const updateAccessOfSelectedFrameworkLineItems = () =>187 {188 console.log(189 "updateAccessOfSelectedFrameworkLineItems - Inside updateAccessOfSelectedFrameworkLineItems + before loop to update records");190 191 const lastIndexToUpdate = selected.length-1;192 selected.forEach(id => 193 {194 console.log(id)195 let indexToUpdate = findMatchingIndex(id);196 if (indexToUpdate >=0)197 {198 updateFrameworkLineItem(indexToUpdate, false, lastIndexToUpdate, currentCriteria, values);199 } 200 });201 setSelected([]);202 }203 const clickSubmit = () => {204 console.log(205 "frameworkAccess - submit clicked values before values = ",206 values207 );208 setOpenPopup(true);209 };210 return (211 <>212 <div className={classes.root}>213 <Container spacing={1} justify="center" className={classes.container}>214 <Item xs={12}>215 <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Access Options</div>216 </Item>217 <Item xs={3}>218 <Button219 variant="contained"220 size="large"221 color="secondary"222 onClick={clickSubmit} 223 className={classes.submit} 224 disabled = {okToUpdate?false:true} 225 >226 Apply Access227 </Button>228 </Item>229 230 <Item xs={3}>231 <Controls.Checkbox232 name="keepPrivate"233 label="Keep Private"234 value={values.keepPrivate}235 onChange={handleInputChange}236 />237 </Item>238 <Item xs={3}>239 <Controls.Select240 name="group_id"241 label="Name of Group With Access"242 classes={classes}243 value={values.group_id}244 onChange={handleInputChange}245 options={groupsUserOwns}246 />247 </Item>248 <Item xs={3}>249 <FormControlLabel250 disabled251 control={252 <Checkbox253 checked={values.approvedPublicReadAccess}254 name="approvedPublicReadAccess"255 color="primary"256 />257 }258 label="Approved for Public Access"259 />260 </Item>261 <Item xs={12}>262 {values.error && (263 <Typography component="p" color="error">264 <Icon color="error" className={classes.error}>265 error266 </Icon>267 {values.error}268 </Typography>269 )}270 </Item>271 </Container>272 </div>273 <Popup274 title="Check boxes to indicate how to Apply new access - Disable options as pre-selected"275 openPopup={openPopup}276 setOpenPopup={setOpenPopup}277 >278 <ApplyOptionsForm279 applyOptions={applyOptions}280 setApplyOptions={setApplyOptions}281 openPopup={openPopup}282 setOpenPopup={setOpenPopup}283 />284 </Popup>285 </>286 );...

Full Screen

Full Screen

constructAccess.js

Source:constructAccess.js Github

copy

Full Screen

1import React from "react";2import { useState } from "react";3import { useEffect } from "react";4import Grid from "@material-ui/core/Grid";5import Button from "@material-ui/core/Button";6import Typography from "@material-ui/core/Typography";7import Icon from "@material-ui/core/Icon";8import FormControlLabel from "@material-ui/core/FormControlLabel";9import Checkbox from "@material-ui/core/Checkbox";10import { makeStyles } from "@material-ui/core/styles";11import { useAccess } from "../../contexts/AccessContext";12import Controls from "./../../controls/Controls";13import { useCriteria } from "../../contexts/CriteriaContext";14import Popup from "../../components/shared/Popup";15import ApplyOptionsForm from "../../components/shared/ApplyOptionsForm"16const useStyles = makeStyles((theme) => ({17 root: {18 flexGrow: 1,19 },20 paper: {21 padding: theme.spacing(2),22 textAlign: "center",23 color: theme.palette.text.secondary,24 },25 error: {26 verticalAlign: "middle",27 },28 title: {29 marginTop: theme.spacing(2),30 color: theme.palette.openTitle,31 },32 textField: {33 marginLeft: theme.spacing(2),34 marginRight: theme.spacing(2),35 defaultValue: "Small",36 variant: "outlined",37 size: "small",38 },39 container: {40 paddingTop: theme.spacing(1),41 paddingBottom: theme.spacing(1),42 outerColumn: {43 borderRight: "1px solid grey",44 borderBottom: "1px solid grey",45 borderLeft: "1px solid grey"46 },47 centerColumn: {48 borderBottom: "1px solid grey"49 }50 },51 gridWrapper: {52 border: "1px solid grey",53 display: "grid",54 backgroundColor: "grey",55 gridRowGap: 1,56 gridColumnGap: 1,57 gridTemplateAreas: `58 "title title title"59 "a1 a2 a3"60 "b1 b2 b3"61 "c1 c2 c3"62 `,63 gridTemplateColumns: "repeat(3, minmax(0, 1fr))",64 "& > *": {65 backgroundColor: "white"66 }67 },68 submit: {69 marginLeft: theme.spacing(4),70 marginRight: theme.spacing(2),71 marginBottom: theme.spacing(2),72 direction: "column",73 position: "center",74 variant: "outlined",75 size: "small",76 },77 input: {78 display: "none",79 },80 filename: {81 marginLeft: "2px",82 },83}));84const Container = (props) => (85 <Grid container justify="space-around" {...props} />86);87const Item = (props) => <Grid item xs={12} {...props} />;88export default function ConstructAccess(props) {89 const {90 selected,91 setSelected,92 updateConstructLineItem,93 constructLineItems,94 groupsUserOwns,95 } = props;96 const classes = useStyles();97 const currentAccess = useAccess();98 const currentCriteria = useCriteria();99 const [openPopup, setOpenPopup] = useState(false);100 const [applyOptions, setApplyOptions] = useState({101 isUpdateListing: false,102 isUpdateSelectedRecords: false,103 isUpdateAllListedRecords: false,104 });105 const [values, setValues] = useState({106 keepPrivate: (currentAccess.keepPrivate != undefined && currentAccess.keepPrivate != null) ? currentAccess.keepPrivate : true,107 approvedForPublicUse: (currentAccess.approvedForPublicUse != undefined && currentAccess.approvedForPublicUse != null) ? currentAccess.approvedForPublicUse : false,108 group_id: currentAccess.group_id ? currentAccess.group_id : "",109 });110 console.log("constructAccess - right after values set ");111 const handleInputChange = e => {112 const name = e.target.name;113 const value = e.target.value;114 setValues({115 ...values,116 [name]: value117 })118 }119 useEffect(() => {120 const abortController = new AbortController();121 const signal = abortController.signal;122 console.log(123 "ConstructAccess - inside useEffect()after currentAccess Set "124 );125 if (currentAccess != undefined && currentAccess != null)126 {127 setValues({128 keepPrivate: (currentAccess.keepPrivate != undefined && currentAccess.keepPrivate != null) ? currentAccess.keepPrivate : true,129 approvedForPublicUse: (currentAccess.approvedForPublicUse != undefined && currentAccess.approvedForPublicUse != null) ? currentAccess.approvedForPublicUse : false,130 group_id: currentAccess.group_id ? currentAccess.group_id : "",131 });132 } 133 return function cleanup() {134 abortController.abort();135 };136 }, [currentAccess]);137 useEffect(() => {138 const abortController = new AbortController();139 const signal = abortController.signal;140 console.log(141 "constructAccess - after return from popup useEffect applyOptions.isUpdateListing = ", applyOptions.isUpdateListing );142 console.log(143 "constructAccess - after return from popup useEffect applyOptions.isUpdateSelectedRecords = ", applyOptions.isUpdateSelectedRecords );144 console.log(145 "constructAccess - after return from popup useEffect applyOptions.isUpdateAllListedRecords = ", applyOptions.isUpdateAllListedRecords );146 if (applyOptions.isUpdateAllListedRecords === true)147 {148 console.log("constructAccess - applyOptions.isUpdateAllListedRecords === true" );149 updateAccessOfAllConstructLineItemsInList();150 } else if (applyOptions.isUpdateSelectedRecords === true)151 {152 console.log("constructAccess -applyOptions.isUpdateSelectedRecords === true" );153 updateAccessOfSelectedConstructLineItems();154 }155 156 return function cleanup() {157 abortController.abort();158 };159 }, [applyOptions]);160 const findMatchingIndex = (search_id) => {161 var index = -1;162 console.log("constructAccess - search_id = ", search_id);163 for (var i = 0; i < constructLineItems.length; i++) {164 console.log(165 "constructAccess - constructLineItems[i]._id = ",166 constructLineItems[i]._id167 );168 if (constructLineItems[i]._id == search_id) {169 index = i;170 break;171 }172 }173 return index;174 };175 const updateAccessOfAllConstructLineItemsInList = () => {176 console.log(177 "updateAccessOfCurrentStatement - Inside updateAccessOfAllConstructLineItemsInList + before loop to update records");178 const lastIndexToUpdate = constructLineItems.length -1;179 for (let i = 0; i < constructLineItems.length; i++) {180 updateConstructLineItem(i, false, lastIndexToUpdate, currentCriteria, values);181 }182 };183 184 const updateAccessOfSelectedConstructLineItems = () =>185 {186 console.log(187 "updateAccessOfSelectedConstructLineItems - Inside updateAccessOfSelectedConstructLineItems + before loop to update records");188 189 const lastIndexToUpdate = selected.length-1;190 selected.forEach(id => 191 {192 console.log(id)193 let indexToUpdate = findMatchingIndex(id);194 if (indexToUpdate >=0)195 {196 updateConstructLineItem(indexToUpdate, false, lastIndexToUpdate, currentCriteria, values);197 } 198 });199 setSelected([]);200 }201 const clickSubmit = () => {202 console.log(203 "constructAccess - submit clicked values before values = ",204 values205 );206 setOpenPopup(true);207 };208 return (209 <>210 <div className={classes.root}>211 <Container spacing={1} justify="center" className={classes.container}>212 <Item xs={12}>213 <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Access Options</div>214 </Item>215 <Item xs={3}>216 <Button217 variant="contained"218 size="large"219 color="secondary"220 onClick={clickSubmit} 221 className={classes.submit} 222 >223 Apply Access224 </Button>225 </Item>226 227 <Item xs={3}>228 <Controls.Checkbox229 name="keepPrivate"230 label="Keep Private"231 value={values.keepPrivate}232 onChange={handleInputChange}233 />234 </Item>235 <Item xs={3}>236 <Controls.Select237 name="group_id"238 label="Name of Group With Access"239 classes={classes}240 value={values.group_id}241 onChange={handleInputChange}242 options={groupsUserOwns}243 />244 </Item>245 <Item xs={3}>246 <FormControlLabel247 disabled248 control={249 <Checkbox250 checked={values.approvedPublicReadAccess}251 name="approvedPublicReadAccess"252 color="primary"253 />254 }255 label="Approved for Public Access"256 />257 </Item>258 <Item xs={12}>259 {values.error && (260 <Typography component="p" color="error">261 <Icon color="error" className={classes.error}>262 error263 </Icon>264 {values.error}265 </Typography>266 )}267 </Item>268 </Container>269 </div>270 <Popup271 title="Check boxes to indicate how to Apply new access - Disable options as pre-selected"272 openPopup={openPopup}273 setOpenPopup={setOpenPopup}274 >275 <ApplyOptionsForm276 applyOptions={applyOptions}277 setApplyOptions={setApplyOptions}278 openPopup={openPopup}279 setOpenPopup={setOpenPopup}280 />281 </Popup>282 </>283 );...

Full Screen

Full Screen

methods.js

Source:methods.js Github

copy

Full Screen

1/*----------------------------------------*\2 bcksp.es - methods.js3 @author Evrard Vincent (vincent@ogre.be)4 @Date: 2018-05-18 16:18:035 @Last Modified time: 2020-03-12 13:11:156\*----------------------------------------*/7import { Meteor } from 'meteor/meteor';8import { 9 checkValidDevice,10 checkUserLoggedIn,11 checkValidEmail,12 checkValidPassword,13 checkString,14 checkValidLanguage15} from './../../utilities/validation.js';16import { config } from './../../startup/config.js';17import { getMainEmail } from './../../utilities/meteor.js';18import { RateLimiterMixin } from 'ddp-rate-limiter-mixin';19export const UsersPing = new ValidatedMethod({20 name: 'Users.methods.ping',21 validate({device}) {22 checkUserLoggedIn();23 checkValidDevice(device);24 },25 mixins: [RateLimiterMixin],26 rateLimit: config.methods.rateLimit.low,27 applyOptions: {28 noRetry: true,29 },30 run({device}) {31 Meteor.users.update({32 _id : Meteor.userId()33 }, {34 $set : {35 "pingAt" : new Date()36 }37 });38 }39});40export const GetLoginTokenUser = new ValidatedMethod({41 name: 'Users.methods.login.token',42 validate({device}) {43 checkUserLoggedIn();44 checkValidDevice(device);45 },46 mixins: [RateLimiterMixin],47 rateLimit: config.methods.rateLimit.low,48 applyOptions: {49 noRetry: true,50 },51 run({device}) {52 LoginLinks.setDefaultExpirationInSeconds(15); // 15 seconds53 if (!this.isSimulation) {54 return {55 success : true,56 data : LoginLinks.generateAccessToken({_id : Meteor.userId() })57 };58 }59 }60});61export const HardDisconnect = new ValidatedMethod({62 name: 'Users.methods.hard.disconnect',63 validate() {64 },65 mixins: [RateLimiterMixin],66 rateLimit: config.methods.rateLimit.low,67 applyOptions: {68 noRetry: true,69 },70 run() {71 Meteor.users.update({ 72 _id : Meteor.userId()73 }, {74 $unset : {75 "services.accessTokens.tokens" : null,76 "services.resume.loginTokens" : null77 }78 });79 const T = i18n.createTranslator("methods.user.HardDisconnect.success");80 return {81 success : true,82 message : {83 title : T("title"),84 content : T("content"),85 }86 };87 }88});89export const ResetPassword = new ValidatedMethod({90 name: 'Users.methods.reset.password',91 validate({device, email}) {92 try{93 checkUserLoggedIn();94 }catch(error){95 checkValidDevice(device);96 checkValidEmail(email, true);97 }98 },99 mixins: [RateLimiterMixin],100 rateLimit: config.methods.rateLimit.low,101 applyOptions: {102 noRetry: true,103 },104 run({email}) {105 this.unblock();106 if (this.isSimulation)return;107 let user = Meteor.user() || Meteor.users.findOne({"emails.address" : email});108 Accounts.sendResetPasswordEmail(user._id, getMainEmail(user.emails));109 const T = i18n.createTranslator("methods.user.resetPassword.success");110 return {111 success : true,112 message : {113 title : T("title"),114 content : T("content")115 }116 };117 }118});119export const UpdateEmail = new ValidatedMethod({120 name: 'Users.methods.update.email',121 validate({email}) {122 checkUserLoggedIn();123 checkValidEmail(email, false, "email");124 },125 mixins: [RateLimiterMixin],126 rateLimit: config.methods.rateLimit.low,127 applyOptions: {128 noRetry: true,129 },130 run({email}) {131 if (this.isSimulation)return;132 Accounts.addEmail(Meteor.userId(), email);133 Accounts.sendVerificationEmail(Meteor.userId(), email);134 const T = i18n.createTranslator("methods.user.updateEmail.success");135 return {136 success : true,137 message : {138 title : T("title"),139 content : T("content")140 }141 };142 }143});144export const CreateUser = new ValidatedMethod({145 name: 'customCreateUser',146 validate({email, password, device}) {147 checkValidDevice(device);148 checkValidEmail(email, false);149 checkValidPassword(password, password);150 },151 mixins: [RateLimiterMixin],152 rateLimit: config.methods.rateLimit.low,153 applyOptions: {154 noRetry: true,155 },156 run({email, password}) {157 if (this.isSimulation)return;158 return Accounts.CreateUser({159 email, 160 password161 });162 }163});164export const DestroyUser = new ValidatedMethod({165 name: 'Users.methods.delete.user',166 validate() {167 checkUserLoggedIn();168 },169 mixins: [RateLimiterMixin],170 rateLimit: config.methods.rateLimit.low,171 applyOptions: {172 noRetry: true,173 },174 run() {175 if (this.isSimulation)return;176 Meteor.users.remove(Meteor.userId());177 const T = i18n.createTranslator("methods.user.deleteAccount.success");178 return {179 success : true,180 message : {181 title : T("title"),182 content : T("content")183 }184 };185 }186});187export const Login = new ValidatedMethod({188 name: 'customLogin',189 validate({email, password}) {190 checkValidDevice(device);191 checkValidEmail(email, true);192 checkValidPassword(password);193 },194 mixins: [RateLimiterMixin],195 rateLimit: config.methods.rateLimit.mid,196 applyOptions: {197 noRetry: true,198 },199 run({email, password}) {200 if (this.isSimulation)return;201 return new Promise((resolve, reject)=>{202 let user = Meteor.users.findOne({"emails.address" : email})203 let result = Accounts._checkPassword(user, password);204 if(result.error){205 reject(result.error);206 }else{207 let stampedLoginToken = Accounts._generateStampedLoginToken()208 Accounts._insertLoginToken(user._id, stampedLoginToken);209 resolve(stampedLoginToken.token);210 }211 });212 }213});214export const SetUserLang = new ValidatedMethod({215 name: 'Users.methods.user.Language.Setter',216 validate({ lang }) {217 checkUserLoggedIn();218 checkValidLanguage(lang);219 },220 mixins: [RateLimiterMixin],221 rateLimit: config.methods.rateLimit.high,222 applyOptions: {223 noRetry: true,224 },225 run({ lang }) {226 this.unblock();227 Meteor.users.update({228 _id : Meteor.userId(),229 }, {230 $set : {231 lang : lang,232 updatedAt : new Date()233 }234 });235 const T = i18n.createTranslator("methods.user.language.success");236 return {237 success : true,238 message : {239 title : T("title"),240 content : T("content")241 }242 };243 }...

Full Screen

Full Screen

resolveArgs.test.js

Source:resolveArgs.test.js Github

copy

Full Screen

...3const targetValues = ['web', 'webworker', 'node', 'async-node', 'node-webkit', 'electron-main', 'electron-renderer', 'electron-preload'];4const cli = new webpackCLI();5describe('BasicResolver', () => {6 it('should handle the output option', async () => {7 const result = await cli.applyOptions({ options: {} }, { outputPath: './bundle' });8 expect(result.options.output.path).toEqual(resolve('bundle'));9 });10 it('should handle the mode option [production]', async () => {11 const result = await cli.applyOptions({ options: {} }, { mode: 'production' });12 expect(result.options).toMatchObject({ mode: 'production' });13 expect(result.options.mode).toEqual('production');14 });15 it('should handle the mode option [development]', async () => {16 const result = await cli.applyOptions(17 { options: {} },18 {19 mode: 'development',20 },21 );22 expect(result.options).toMatchObject({ mode: 'development' });23 expect(result.options.mode).toEqual('development');24 });25 it('should handle the mode option [none]', async () => {26 const result = await cli.applyOptions(27 { options: {} },28 {29 mode: 'none',30 },31 );32 expect(result.options).toMatchObject({ mode: 'none' });33 expect(result.options.mode).toEqual('none');34 });35 it('should prefer supplied move flag over NODE_ENV', async () => {36 process.env.NODE_ENV = 'production';37 const result = await cli.applyOptions({ options: {} }, { mode: 'development' });38 expect(result.options).toMatchObject({ mode: 'development' });39 });40 it('should prefer supplied move flag over mode from config', async () => {41 const result = await cli.applyOptions({ options: { mode: 'development' } }, { mode: 'production' });42 expect(result.options).toMatchObject({ mode: 'production' });43 });44 it('should prefer mode form config over NODE_ENV', async () => {45 process.env.NODE_ENV = 'development';46 const result = await cli.applyOptions({ options: {} }, { mode: 'production' });47 expect(result.options).toMatchObject({ mode: 'production' });48 });49 it('should prefer mode form flag over NODE_ENV and config', async () => {50 process.env.NODE_ENV = 'development';51 const result = await cli.applyOptions({ options: {} }, {});52 expect(result.options).toMatchObject({ mode: 'development' });53 });54 targetValues.map((option) => {55 it(`should handle ${option} option`, async () => {56 const result = await cli.applyOptions({ options: {} }, { target: option });57 expect(result.options.target).toEqual(option);58 });59 });...

Full Screen

Full Screen

script.js

Source:script.js Github

copy

Full Screen

1function witchselect(menu) {2 if (menu.id==="c2R1" || menu.id==="c2R2") {3 var target = document.getElementById("c3R1");4 var choice1 = document.getElementById("c2R1");5 var choice2 = document.getElementById("c2R2");6 applyoptions(target, choice1, choice2);7 }8 else if (menu.id==="c2R3" || menu.id==="c2R4") {9 var target = document.getElementById("c3R2");10 var choice1 = document.getElementById("c2R3");11 var choice2 = document.getElementById("c2R4");12 applyoptions(target, choice1, choice2);13 }14 else if (menu.id==="c8R1" || menu.id==="c8R2") {15 var target = document.getElementById("c7R1");16 var choice1 = document.getElementById("c8R1");17 var choice2 = document.getElementById("c8R2");18 applyoptions(target, choice1, choice2);19 }20 else if (menu.id==="c8R3" || menu.id==="c8R4") {21 var target = document.getElementById("c7R2");22 var choice1 = document.getElementById("c8R3");23 var choice2 = document.getElementById("c8R4");24 applyoptions(target, choice1, choice2);25 }26 else if (menu.id==="c3R1" || menu.id==="c3R2") {27 var target = document.getElementById("c4R1");28 var choice1 = document.getElementById("c3R1");29 var choice2 = document.getElementById("c3R2");30 applyoptions(target, choice1, choice2);31 }32 else if (menu.id==="c7R1" || menu.id==="c7R2") {33 var target = document.getElementById("c6R1");34 var choice1 = document.getElementById("c7R1");35 var choice2 = document.getElementById("c7R2");36 applyoptions(target, choice1, choice2);37 }38 else if (menu.id==="c4R1" || menu.id==="c6R1") {39 var target = document.getElementById("c5R1");40 var choice1 = document.getElementById("c4R1");41 var choice2 = document.getElementById("c6R1");42 applyoptions(target, choice1, choice2);43 }44}45function applyoptions(target, choice1, choice2) {46 target.innerHTML = "";47 if (choice1.value == "" || choice2.value == "") {48 target.setAttribute("disabled", "disabled");49 }50 else {51 var opt = document.createElement('option');52 opt.innerHTML = "Select";53 opt.value = "";54 target.appendChild(opt);55 opt = document.createElement('option');56 opt.innerHTML = choice1.value;57 target.appendChild(opt);58 opt = document.createElement('option');59 opt.innerHTML = choice2.value;60 target.appendChild(opt);61 target.removeAttribute("disabled");62 }63 witchselect(target);...

Full Screen

Full Screen

apply_options.test.js

Source:apply_options.test.js Github

copy

Full Screen

1const test = require('ava')2const applyOptions = require('../lib/help/apply_options')3test('options.iat must be a boolean', (t) => {4 t.throws(() => applyOptions({ iat: 1 }, {}), {5 instanceOf: TypeError,6 message: 'options.iat must be a boolean',7 })8})9test('now not a Date object', (t) => {10 t.throws(() => applyOptions({ now: 1 }, {}), {11 instanceOf: TypeError,12 message: 'options.now must be a valid Date object',13 })14})15test('now not a valid Date object', (t) => {16 t.throws(() => applyOptions({ now: 'foo' }, {}), {17 instanceOf: TypeError,18 message: 'options.now must be a valid Date object',19 })20})21;['expiresIn', 'notBefore', 'audience', 'issuer', 'subject', 'kid', 'jti'].forEach((option) => {22 test(`options.${option} must be a string`, (t) => {23 t.throws(() => applyOptions({ [option]: 1 }, {}), {24 instanceOf: TypeError,25 message: `options.${option} must be a string`,26 })27 })28})29Object.entries({30 issuer: 'iss',31 audience: 'aud',32 kid: 'kid',33 jti: 'jti',34 subject: 'sub',35}).forEach(([option, claim]) => {36 test(`options.${option} puts a ${claim} in the payload`, (t) => {37 t.deepEqual(applyOptions({ [option]: 'value', iat: false }, {}), { [claim]: 'value' })38 })39})40test('defaults', (t) => {41 t.true('iat' in applyOptions({}, {}))42})43test('expiresIn', (t) => {44 t.true('exp' in applyOptions({ expiresIn: '1d' }, {}))45})46test('notBefore', (t) => {47 t.true('nbf' in applyOptions({ notBefore: '1d' }, {}))...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.applyOptions({ viewport: { width: 640, height: 480 } });7 await page.screenshot({ path: `example.png` });8 await browser.close();9})();10#### playwright.launch([options])11 - `headless` <[boolean]> Whether to run browser in headless mode. Defaults to `true` unless the `devtools` option is `true`. _**(Optional)**_12 - `slowMo` <[number]> Slows down Playwright operations by the specified amount of milliseconds. Useful so that you can see what is going on. Defaults to `0`. _**(Optional)**_13 - `devtools` <[boolean]> Whether to auto-open a DevTools panel for each tab. If this option is `true`, the `headless` option will be set `false`. _**(Optional)**_14 - `executablePath` <[string]> Path to a browser executable to run instead of the bundled one. If `executablePath` is a relative path, then it is resolved relative to the current working directory. Note that Playwright only works with the bundled Chromium, Firefox or WebKit, use at your own risk. _**(Optional)**_15 - `handleSIGINT` <[boolean]> Close the browser process on Ctrl-C. Defaults to `true`. _**(Optional)**_16 - `handleSIGTERM` <[boolean]> Close the browser process on SIGTERM. Defaults to `true`. _**(Optional)**_

Full Screen

Using AI Code Generation

copy

Full Screen

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

Full Screen

Using AI Code Generation

copy

Full Screen

1const { Playwright } = require('playwright-core');2const { chromium } = require('playwright-chromium');3const { firefox } = require('playwright-firefox');4const { webkit } = require('playwright-webkit');5const { devices } = require('playwright-core/lib/server/deviceDescriptors');6const { getTestState } = require('playwright-core/lib/server/test');7const { assert } = require('console');8const { test } = require('playwright-core/lib/server/testRunner');9const { expect } = require('chai');10const { it } = test;11(async () => {12 const browser = await chromium.launch();13 const context = await browser.newContext();14 const page = await context.newPage();15 const userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36';16 const viewport = { width: 1280, height: 720 };17 await page.applyOptions({18 });19 expect(await page.evaluate(() => navigator.userAgent)).to.equal(userAgent);20 expect(await page.evaluate(() => window.innerWidth)).to.equal(viewport.width);21 expect(await page.evaluate(() => window.innerHeight)).to.equal(viewport.height);22 await browser.close();23})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { applyOptions } = require('playwright/lib/server/frames');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 page.evaluate(async () => {8 const { applyOptions } = window['playwright/lib/server/frames'];9 await applyOptions({10 viewport: {11 },12 });13 });14 await page.screenshot({ path: `example.png` });15 await browser.close();16})();17const { chromium } = require('playwright');18(async () => {19 const browser = await chromium.launch();20 const context = await browser.newContext();21 const page = await context.newPage();22 await page.evaluate(async () => {23 const { applyOptions } = window['playwright/lib/server/frames'];24 await applyOptions({25 viewport: {26 },27 });28 });29 await page.screenshot({ path: `example2.png` });30 await browser.close();31})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { Playwright } = require('playwright');2const { chromium } = Playwright;3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 await context._options.applyOptions({ viewport: { width: 1024, height: 768 } });7 const page = await context.newPage();8 await page.screenshot({ path: 'example.png' });9 await browser.close();10})();11[Apache 2.0](LICENSE)

Full Screen

Using AI Code Generation

copy

Full Screen

1const { InternalApi } = require('playwright-core/lib/server/internalApi');2const { Playwright } = require('playwright-core');3const playwright = new Playwright();4const internalApi = new InternalApi(playwright);5const options = {headless: false};6internalApi.applyOptions(options);7const { InternalApi } = require('playwright-core/lib/server/internalApi');8const { Playwright } = require('playwright-core');9const playwright = new Playwright();10const internalApi = new InternalApi(playwright);11const options = {headless: false};12internalApi.launchServer(options);13const { InternalApi } = require('playwright-core/lib/server/internalApi');14const { Playwright } = require('playwright-core');15const playwright = new Playwright();16const internalApi = new InternalApi(playwright);17const options = {headless: false};18internalApi.launchBrowserServer(options);19const { InternalApi } = require('playwright-core/lib/server/internalApi');20const { Playwright } = require('playwright-core');21const playwright = new Playwright();22const internalApi = new InternalApi(playwright);23const options = {headless: false};24internalApi.launchBrowserApp(options);25const { InternalApi } = require('playwright-core/lib/server/internalApi');26const { Playwright } = require('playwright-core');27const playwright = new Playwright();28const internalApi = new InternalApi(playwright);29const options = {headless: false};30internalApi.launchBrowserApp(options);31const { InternalApi } = require('playwright-core/lib/server/internalApi');32const { Playwright } = require('playwright-core');33const playwright = new Playwright();34const internalApi = new InternalApi(playwright);35const options = {headless: false};

Full Screen

Using AI Code Generation

copy

Full Screen

1const { applyOptions } = require('playwright/lib/server/browserType');2const options = {3};4const browser = await applyOptions(BrowserType, options);5const { applyOptions } = require('playwright/lib/server/browserType');6const options = {7};8const browser = await applyOptions(BrowserType, options);9const { applyOptions } = require('playwright/lib/server/browserType');10const options = {11};12const browser = await applyOptions(BrowserType.launch, options);

Full Screen

Using AI Code Generation

copy

Full Screen

1const { Playwright } = require('@playwright/test');2const { WebKit } = Playwright;3const { WebKitBrowser } = WebKit;4const webkitBrowser = new WebKitBrowser();5webkitBrowser.applyOptions({6 viewport: { width: 100, height: 100 },7});8- [Playwright Test Reporter](

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2const { applyOptions } = require('playwright/lib/server/browserType');3const { devices } = require('playwright/lib/server/deviceDescriptors');4const iPhone = devices['iPhone 6'];5(async () => {6 const browser = await chromium.launch({7 });8 const context = await applyOptions(browser._defaultContext, {9 });10 const page = await context.newPage();11})();12const { chromium } = require('playwright');13const { devices } = require('playwright/lib/server/deviceDescriptors');14const iPhone = devices['iPhone 6'];15(async () => {16 const browser = await chromium.launch({17 });18 const context = await browser.newContext({19 });20 const page = await context.newPage();21})();22const { chromium } = require('playwright');23const { devices } = require('playwright/lib/server/deviceDescriptors');24const iPhone = devices['iPhone 6'];25(async () => {26 const browser = await chromium.launch({27 });28 const context = await browser.newContext(iPhone);29 const page = await context.newPage();30})();31const { chromium } = require('playwright');32const { devices } = require('playwright/lib/server/deviceDescriptors');33const iPhone = devices['iPhone 6'];34(async () => {35 const browser = await chromium.launch({36 });37 const context = await browser.newContext(iPhone);38 const page = await context.newPage(iPhone);

Full Screen

Using AI Code Generation

copy

Full Screen

1const playwright = require('playwright');2const { Playwright } = require('playwright/lib/server/playwright');3const { chromium } = require('playwright');4const { devices } = require('playwright');5(async () => {6 const browser = await chromium.launch();7 const page = await browser.newPage();8 await page.screenshot({ path: `example.png` });9 await browser.close();10})();11const { devices } = require('../deviceDescriptors');12const { BrowserType } = require('./browserType');13const { BrowserServer } = require('./browserServer');14const { BrowserContext } = require('./browserContext');15const { Browser } = require('./browser');16const { ConnectionTransport } = require('./transport');17const { Connection } = require('./connection');18const { assert } = require('../utils/utils');19const { TimeoutSettings } = require('../utils/timeoutSettings');20const { Events } = require('../utils/events');21const { helper } = require('../helper');22const { debugLogger } = require('../utils/debugLogger');23const { ProgressController } = require('../utils/progress');24const { createGuid } = require('../utils/utils');25const { BrowserFetcher } = require('./browserFetcher');26const { PlaywrightDispatcher } = require('../dispatchers/playwrightDispatcher');27const { DispatcherConnection } = require('../dispatchers/dispatcher');28const { serializeError } = require('../utils/serializeError');29const { BrowserContextDispatcher } = require('../dispatchers/browserContextDispatcher');30const { BrowserTypeDispatcher } = require('../dispatchers/browserTypeDispatcher');31const { BrowserDispatcher } = require('../dispatchers/browserDispatcher');32const { BrowserServerDispatcher } = require('../dispatchers/browserServerDispatcher');33const { BrowserContextChannel } = require('../channels');34const { BrowserTypeChannel } = require('../channels');35const { BrowserChannel } = require('../channels');36const { BrowserServerChannel } = require('../channels');37const { BrowserContextInitializer, BrowserTypeInitializer, BrowserInitializer, BrowserServerInitializer } = require('../protocol/channels');38const { BrowserContextEvents } = require('../protocol/browserContext');39const { BrowserTypeEvents } = require('../protocol/browserType');40const { BrowserEvents } = require('../protocol/browser');41const { BrowserServerEvents } = require('../protocol/browserServer');42const { BrowserContextChannelOwner } =

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