Best JavaScript code snippet using testcafe
cam-dtal-lion.js
Source:cam-dtal-lion.js  
...1109    initEdgeMetricOptions();1110    // Initialize aggregation metric options menu1111	initAggregationFuncOptions();1112    // Initialize object types menu1113    initTypeOptions();1114}1115function initEdgeMetricOptions()1116{1117    // ---------------------------------------  1118    // Initialize edge metric options1119    // ---------------------------------------  1120    var edge_metric_options_html = '';1121    for(var i = 0; i < edge_metric_values_index.length; i++)1122    {1123        edge_metric_options_html += '<div class="item cam-dtal-lion-edge-metric" data-value="edge-sort" data-subvalue="' + edge_metric_values_index[i] + '"><i class="ui green checkmark icon cam-dtal-lion-edge-metric-tick cam-dtal-lion-edge-metric-tick-' + edge_metric_values_index[i] + '"></i>' + edge_metric_values_data[i].short+ '</div>';1124        // Remove popupup to avoid problem of menu disappearing - 08/06/2017        1125        /*1126        edge_metric_options_html += '<div class="item cam-dtal-lion-edge-metric" data-content="' + edge_metric_values_data[i].long + '" data-position="left center" data-value="edge-sort" data-subvalue="' + edge_metric_values_index[i] + '"><i class="ui green checkmark icon cam-dtal-lion-edge-metric-tick cam-dtal-lion-edge-metric-tick-' + edge_metric_values_index[i] + '"></i>' + edge_metric_values_data[i].short+ '</div>';1127        */1128    }1129    $('.cam-dtal-lion-edge-metric-options').append(edge_metric_options_html);1130    $('.cam-dtal-lion-edge-metric').popup();1131    if (edge_metric_values_index.indexOf(edge_metric) != -1) setEdgeMetric(edge_metric);1132}1133function initAggregationFuncOptions()1134{1135    // ---------------------------------------  1136    // Initialize aggregation metric options1137    // ---------------------------------------  1138    var aggregation_func_options_html = '';1139    for(var i = 0; i < aggregation_func_values_index.length; i++)1140    {1141        aggregation_func_options_html += '<div class="item cam-dtal-lion-aggregation-func" data-value="aggregation-sort" data-subvalue="' + aggregation_func_values_index[i] + '"><i class="ui green checkmark icon cam-dtal-lion-aggregation-func-tick cam-dtal-lion-aggregation-func-tick-' + aggregation_func_values_index[i] + '"></i>' + aggregation_func_values_data[i].short+ '</div>';1142    }1143    $('.cam-dtal-lion-aggregation-func-options').append(aggregation_func_options_html);1144    $('.cam-dtal-lion-aggregation-func').popup();1145    if (aggregation_func_values_index.indexOf(aggregation_func) != -1) setAggregationFunc(aggregation_func);1146}1147function initTypeOptions()1148{1149    // ---------------------------------------  1150    // Initialize object type options1151    // ---------------------------------------  1152    var types_html  = '';1153    var expand_types_html = '';1154    for(var i = 0; i < alltypes_code.length; i++)1155    {1156        types_html += '<div class="item ' + alltypes_code[i] + '" data-value="' + alltypes_code[i] + '">' + alltypes_description[i] + '</div>';1157        expand_types_html += '<div class="item nodeexpandtype ' + alltypes_code[i] + '" data-value="' + alltypes_code[i] + '">' + alltypes_description[i] + '</div>';1158    }1159    $('.cam-dtal-lion-type-options').append(types_html);1160    $('.cam-dtal-lion-dialog-node-expandbytype-content').append(expand_types_html);1161    revertTypesToInternalValues();  ...index.jsx
Source:index.jsx  
...289      }290      //æ´æ°ç¶æ291      setPlaceOptions([...placeOptions]);292    };293    initTypeOptions();294    initPlaceOptions();295  }, [asset, isUpdate]);296  return (297    <Card title={title}>298      <Form299        labelCol={{300          xs: { span: 24, offset: 0 },301          sm: { span: 4, offset: 4 },302        }}303        wrapperCol={{304          xs: { span: 24 },305          sm: { span: 12 },306        }}307        onFinish={onFinish}308      >309        <Item310          name="types"311          initialValue={types}312          label="èµäº§ç±»å"313          rules={[{ required: true }]}314        >315          <Cascader316            placeholder="è¯·éæ©èµäº§ç±»å"317            disabled={isUpdate}318            options={typeOptions}319            loadData={loadTypeData}320            onChange={onTypeChange}321          />322        </Item>323        <Item324          name="name"325          initialValue={asset.name}326          label="èµäº§åç§°"327          rules={[{ required: true }]}328        >329          <Input placeholder="请è¾å
¥èµäº§åç§°" />330        </Item>331        <Item332          name="statusDisplay"333          label="ç¶æ"334          initialValue={335            asset.status ? (asset.status === 1 ? true : false) : true336          }337          valuePropName="checked"338          rules={[{ required: true }]}339        >340          <Switch checkedChildren="使ç¨ä¸" unCheckedChildren="åæ¢ä½¿ç¨" />341        </Item>342        <Item name="places" initialValue={places} label="èµäº§ä½ç½®">343          <Cascader344            placeholder="è¯·éæ©èµäº§ä½ç½®"345            options={placeOptions}346            loadData={loadPlaceData}347          />348        </Item>349        <Item name="use_dept" initialValue={asset.use_dept} label="使ç¨é¨é¨">350          <Input placeholder="请è¾å
¥ä½¿ç¨é¨é¨" />351        </Item>352        <Item353          name="manage_user"354          initialValue={asset.manage_user}355          label="管ç人"356        >357          <Input placeholder="请è¾å
¥ç®¡ç人" />358        </Item>359        <Item name="model" initialValue={asset.model} label="åå·">360          <Input placeholder="请è¾å
¥åå·" />361        </Item>362        <Item363          name="manufactory"364          initialValue={asset.manufactory}365          label="ç产åå®¶"366        >367          <Input placeholder="请è¾å
¥ç产åå®¶" />368        </Item>369        <Item name="sn" initialValue={asset.sn} label="ç³»åå·">370          <Input placeholder="请è¾å
¥ç³»åå·" />371        </Item>372        <Item373          name="product_dateObj"374          initialValue={asset.product_date ? moment(asset.product_date) : null}375          label="çäº§æ¥æ"376        >377          <DatePicker placeholder="è¯·éæ©çäº§æ¥æ" />378        </Item>379        <Item380          name="trade_dateObj"381          initialValue={asset.trade_date ? moment(asset.trade_date) : null}382          label="è´ä¹°æ¥æ"383        >384          <DatePicker placeholder="è¯·éæ©è´ä¹°æ¥æ" />385        </Item>386        <Item387          name="expire_dateObj"388          initialValue={asset.expire_date ? moment(asset.expire_date) : null}389          label="è¿ä¿æ¥æ"390        >391          <DatePicker placeholder="è¯·éæ©è¿ä¿æ¥æ" />392        </Item>393        <Item394          name="asset_code"395          initialValue={asset.asset_code}396          label="åºå®èµäº§ç¼ç "397        >398          <Input placeholder="请è¾å
¥åºå®èµäº§ç¼ç " />399        </Item>400        {(() => {401          switch (type) {402            case "PC":403              return <PCAddUpdate asset={asset} />;404            case "Printer":405              return <PrinterAddUpdate asset={asset} />;406            case "Server":407              return <ServerAddUpdate asset={asset} />;408            case "NetDevice":409              return <NetDevAddUpdate asset={asset} />;410            case "SecDevice":411              return <SecDevAddUpdate asset={asset} />;412            default:413              return null;414          }415        })()}416        <Item417          wrapperCol={{418            xs: { span: 24, offset: 0 },419            sm: { span: 16, offset: 8 },420          }}421        >422          <Button type="primary" htmlType="submit">423            æäº¤424          </Button>425        </Item>426      </Form>427    </Card>428  );429}430// class AssetAddUpdate extends Component {431//     state = {432//         typeOptions: [],//èµäº§ç±»å级è䏿æ¡çOptions433//         placeOptions: [],//èµäº§ä½ç½®çº§è䏿æ¡çOptions434//         type: '',//è®°å½èµäº§ç±»åéä¸çåç±»ï¼å¨æå è½½å¯¹åºç»ä»¶435//     }436//     initTypeOptions = async () => {437//         const typeOptions = []438//         for (var key in ASSET_TYPES) {439//             const option = { value: key, label: ASSET_TYPES[key], isLeaf: false }440//             typeOptions.push(option)441//         }442//         //妿æ¯ç¼è¾èµäº§ä¸åå¨èµäº§åç±»443//         const { isUpdate, asset } = this444//         const { type, sub_type } = asset445//         if (isUpdate && sub_type) {446//             //è·åèµäº§åç±»447//             const result = await reqCategorys(type)448//             if (result.code === "success") {449//                 //çæåç±»å表450//                 const categorys = result.data451//                 const childOptions = categorys.map(c => ({452//                     value: c.id,453//                     label: c.name,454//                     isLeaf: true455//                 }))456//                 //æ¾å°å¯¹åºçä¸çº§åç±»Optionå¹¶å
³è457//                 const targetOption = typeOptions.find(option => option.value === type)458//                 targetOption.children = childOptions459//             } else {460//                 message.error('è·ååç±»å表失败')461//             }462//         }463//         this.setState({464//             typeOptions465//         })466//     }467//     loadTypeData = async selectedOptions => {468//         const targetOption = selectedOptions[0];469//         targetOption.loading = true;470//         const result = await reqCategorys(targetOption.value)471//         targetOption.loading = false;472//         this.setState({ loading: false })473//         if (result.code === "success") {474//             const categorys = result.data475//             if (categorys && categorys.length > 0) {476//                 const childOptions = categorys.map(c => ({477//                     value: c.id,478//                     label: c.name,479//                     isLeaf: true480//                 }))481//                 targetOption.children = childOptions482//             }483//             else {484//                 targetOption.isLeaf = true485//             }486//             this.setState({487//                 typeOptions: [...this.state.typeOptions]488//             })489//         } else {490//             message.error('è·ååç±»å表失败')491//         }492//     }493//     onTypeChange = (value, selectedOptions) => {494//         console.log(value, selectedOptions)495//         if (value[0] !== this.state.type) {496//             this.setState({497//                 type: value[0]498//             })499//         }500//     }501//     //è·åä½ç½®å表502//     getPlaces = async (parent_Id) => {503//         const result = await reqPlaces(parent_Id)504//         if (result.code === "success") {505//             return result.data506//         } else {507//             message.error('è·ååç±»å表失败')508//         }509//     }510//     //åå§åä½ç½®çº§è䏿æ¡çOptions511//     initPlaceOptions = async () => {512//         //åå§åæé¡¶ç«¯ç¶èç¹513//         const placeOptions = [{ value: 0, label: 'XXå
¬å¸', isLeaf: false }]514//         //妿æ¯ç¼è¾èµäº§515//         const { isUpdate, asset } = this516//         if (isUpdate && asset.place_obj && asset.place_obj.parent_ids && asset.place_obj.parent_ids.length > 1) {517//             const place_id = asset.place_obj.parent_ids518//             //éåparentï¼è¯»åå½åçææç¶ä½ç½®çå表ï¼å¹¶å½¢æoptions519//             let parentOptions = placeOptions520//             for (let id of place_id) {521//                 const places = await this.getPlaces(id)522//                 const childOptions = places.map(p => ({523//                     value: p.id,524//                     label: p.name,525//                     isLeaf: !p.hasChildren526//                 }))527//                 //æ¾å°å¯¹åºçç¶åç±»Optionå¹¶å
³è528//                 const targetOption = parentOptions.find(option => option.value === id)529//                 targetOption.children = childOptions530//                 parentOptions = childOptions531//             }532//         }533//         //æ´æ°ç¶æ534//         this.setState({ placeOptions })535//     }536//     //ç¨æ·ç¹å»çº§è䏿æ¡ç¸åºé项ï¼å¨æå è½½ä¸ä¸çº§537//     loadPlaceData = async selectedOptions => {538//         const targetOption = selectedOptions[selectedOptions.length - 1];539//         targetOption.loading = true;540//         const result = await reqPlaces(targetOption.value)541//         targetOption.loading = false;542//         this.setState({ loading: false })543//         if (result.code === "success") {544//             const places = result.data545//             if (places && places.length > 0) {546//                 const childOptions = places.map(c => ({547//                     value: c.id,548//                     label: c.name,549//                     isLeaf: !c.hasChildren550//                 }))551//                 targetOption.children = childOptions552//             }553//             else {554//                 targetOption.isLeaf = true555//             }556//             this.setState({557//                 placeOptions: [...this.state.placeOptions]558//             })559//         } else {560//             message.error('è·ååç±»å表失败')561//         }562//     }563//     //表åæäº¤å¤ç564//     onFinish = async (values) => {565//         //è·åå¹¶å¤çæ°æ®566//         const {567//             name,568//             types,569//             statusDisplay,570//             places,571//             use_dept,572//             manage_user,573//             model,574//             manufactory,575//             sn,576//             product_dateObj,577//             trade_dateObj,578//             expire_dateObj,579//             asset_code,580//             ip,581//             mac,582//             display,583//             printer,584//             cpu,585//             memory,586//             disk,587//             os,588//             func_type,589//             paper,590//             nic,591//             database,592//             middleware,593//             usage,594//             online_dateObj,595//             management_ip,596//             port_num,597//             device_detail,598//         } = values599//         //statuså¤ç600//         let status = 2601//         if (statusDisplay) {602//             status = 1603//         }604//         //type.sub_typeå¤ç605//         let type, sub_type606//         if (types.length === 1) {607//             type = types[0]608//         }609//         else {610//             type = types[0]611//             sub_type = types[1]612//         }613//         //ä½ç½®å¤ç614//         let place615//         if (places.length > 0) {616//             place = places[places.length - 1]617//         }618//         else {619//             place = null620//         }621//         if (use_dept === '') {622//             use_dept = null623//         }624//         if (manage_user === '') {625//             manage_user = null626//         }627//         //æ¥æå¤ç628//         const product_date = product_dateObj ? product_dateObj.format('YYYY-MM-DD') : null629//         const trade_date = trade_dateObj ? trade_dateObj.format('YYYY-MM-DD') : null630//         const expire_date = expire_dateObj ? expire_dateObj.format('YYYY-MM-DD') : null631//         const online_date = online_dateObj ? online_dateObj.format('YYYY-MM-DD') : null632//         const asset = {633//             name,634//             type,635//             sub_type,636//             status,637//             place,638//             use_dept,639//             manage_user,640//             model,641//             manufactory,642//             sn,643//             product_date,644//             trade_date,645//             expire_date,646//             asset_code,647//             ip,648//             mac,649//             display,650//             printer,651//             cpu,652//             memory,653//             disk,654//             os,655//             func_type,656//             paper,657//             nic,658//             database,659//             middleware,660//             usage,661//             online_date,662//             management_ip,663//             port_num,664//             device_detail,665//         }666//         //å¦ææ¯æ´æ°ï¼è¿éè¦å å
¥id667//         if (this.isUpdate) {668//             asset.id = this.asset.id669//         }670//         //åé请æ±671//         const result = await reqAddOrUpdateAsset(asset)672//         if (result.code === "success") {673//             message.success(`${this.isUpdate ? 'æ´æ°' : 'æ°å¢'}èµäº§æå`)674//             this.props.history.goBack()675//         }676//         else {677//             message.error(`${this.isUpdate ? 'æ´æ°' : 'æ°å¢'}èµäº§å¤±è´¥`)678//         }679//     };680//     constructor(props) {681//         super(props)682//         const asset = this.props.location.state683//         this.isUpdate = !!asset684//         this.asset = asset || {}685//     }686//     componentDidMount() {687//         if (this.isUpdate) {688//             this.setState({689//                 type: this.props.location.state.type690//             })691//         }692//         this.initTypeOptions()693//         this.initPlaceOptions()694//     }695//     render() {696//         const { typeOptions, type, placeOptions } = this.state697//         const { isUpdate, asset } = this698//         const types = []699//         if (isUpdate) {700//             types.push(asset.type)701//             if (asset.sub_type) {702//                 types.push(asset.sub_type)703//             }704//         }705//         let places = []706//         if (isUpdate) {...actions.js
Source:actions.js  
1import TYPE from './type';2import SelectorBuilder from '../../client-functions/selectors/selector-builder';3import ClientFunctionBuilder from '../../client-functions/client-function-builder';4import functionBuilderSymbol from '../../client-functions/builder-symbol';5import Assignable from '../../utils/assignable';6import { ActionOptions, ClickOptions, MouseOptions, TypeOptions } from './options';7import {8    actionOptions,9    integerArgument,10    positiveIntegerArgument,11    nonEmptyStringArgument,12    urlArgument,13    stringOrStringArrayArgument,14    setSpeedArgument15} from './validations/argument';16import { ActionSelectorError, SetNativeDialogHandlerCodeWrongTypeError } from '../../errors/test-run';17import { APIError } from '../../errors/runtime';18// Initializers19function initSelector (name, val, skipVisibilityCheck) {20    try {21        var builder = new SelectorBuilder(val, { visibilityCheck: !skipVisibilityCheck }, { instantiation: 'Selector' });22        return builder.getCommand([]);23    }24    catch (err) {25        var msg = err.constructor === APIError ? err.rawMessage : err.message;26        throw new ActionSelectorError(name, msg);27    }28}29function initActionOptions (name, val) {30    return new ActionOptions(val, true);31}32function initClickOptions (name, val) {33    return new ClickOptions(val, true);34}35function initMouseOptions (name, val) {36    return new MouseOptions(val, true);37}38function initTypeOptions (name, val) {39    return new TypeOptions(val, true);40}41function initDialogHandler (name, val) {42    var fn         = val.dialogHandler;43    var options    = val.options;44    var methodName = 'setNativeDialogHandler';45    var builder    = fn && fn[functionBuilderSymbol];46    builder = builder instanceof ClientFunctionBuilder ? builder : null;47    if (builder) {48        if (builder instanceof SelectorBuilder)49            throw new SetNativeDialogHandlerCodeWrongTypeError(builder.callsiteNames.instantiation);50        fn = fn.with(options);51        builder = fn[functionBuilderSymbol];52    }53    else {54        var functionType = typeof fn;55        if (functionType !== 'function')56            throw new SetNativeDialogHandlerCodeWrongTypeError(functionType);57        builder = new ClientFunctionBuilder(fn, options, {58            instantiation: methodName,59            execution:     methodName60        });61    }62    return builder.getCommand([]);63}64// Commands65export class ClickCommand extends Assignable {66    constructor (obj) {67        super(obj);68        this.type     = TYPE.click;69        this.selector = null;70        this.options  = null;71        this._assignFrom(obj, true);72    }73    _getAssignableProperties () {74        return [75            { name: 'selector', init: initSelector, required: true },76            { name: 'options', type: actionOptions, init: initClickOptions, required: true }77        ];78    }79}80export class RightClickCommand extends Assignable {81    constructor (obj) {82        super(obj);83        this.type     = TYPE.rightClick;84        this.selector = null;85        this.options  = null;86        this._assignFrom(obj, true);87    }88    _getAssignableProperties () {89        return [90            { name: 'selector', init: initSelector, required: true },91            { name: 'options', type: actionOptions, init: initClickOptions, required: true }92        ];93    }94}95export class DoubleClickCommand extends Assignable {96    constructor (obj) {97        super(obj);98        this.type     = TYPE.doubleClick;99        this.selector = null;100        this.options  = null;101        this._assignFrom(obj, true);102    }103    _getAssignableProperties () {104        return [105            { name: 'selector', init: initSelector, required: true },106            { name: 'options', type: actionOptions, init: initClickOptions, required: true }107        ];108    }109}110export class HoverCommand extends Assignable {111    constructor (obj) {112        super(obj);113        this.type     = TYPE.hover;114        this.selector = null;115        this.options  = null;116        this._assignFrom(obj, true);117    }118    _getAssignableProperties () {119        return [120            { name: 'selector', init: initSelector, required: true },121            { name: 'options', type: actionOptions, init: initMouseOptions, required: true }122        ];123    }124}125export class TypeTextCommand extends Assignable {126    constructor (obj) {127        super(obj);128        this.type     = TYPE.typeText;129        this.selector = null;130        this.text     = null;131        this.options  = null;132        this._assignFrom(obj, true);133    }134    _getAssignableProperties () {135        return [136            { name: 'selector', init: initSelector, required: true },137            { name: 'text', type: nonEmptyStringArgument, required: true },138            { name: 'options', type: actionOptions, init: initTypeOptions, required: true }139        ];140    }141}142export class DragCommand extends Assignable {143    constructor (obj) {144        super(obj);145        this.type        = TYPE.drag;146        this.selector    = null;147        this.dragOffsetX = null;148        this.dragOffsetY = null;149        this.options     = null;150        this._assignFrom(obj, true);151    }152    _getAssignableProperties () {153        return [154            { name: 'selector', init: initSelector, required: true },155            { name: 'dragOffsetX', type: integerArgument, required: true },156            { name: 'dragOffsetY', type: integerArgument, required: true },157            { name: 'options', type: actionOptions, init: initMouseOptions, required: true }158        ];159    }160}161export class DragToElementCommand extends Assignable {162    constructor (obj) {163        super(obj);164        this.type = TYPE.dragToElement;165        this.selector            = null;166        this.destinationSelector = null;167        this.options             = null;168        this._assignFrom(obj, true);169    }170    _getAssignableProperties () {171        return [172            { name: 'selector', init: initSelector, required: true },173            { name: 'destinationSelector', init: initSelector, required: true },174            { name: 'options', type: actionOptions, init: initMouseOptions, required: true }175        ];176    }177}178export class SelectTextCommand extends Assignable {179    constructor (obj) {180        super(obj);181        this.type     = TYPE.selectText;182        this.selector = null;183        this.startPos = null;184        this.endPos   = null;185        this.options  = null;186        this._assignFrom(obj, true);187    }188    _getAssignableProperties () {189        return [190            { name: 'selector', init: initSelector, required: true },191            { name: 'startPos', type: positiveIntegerArgument },192            { name: 'endPos', type: positiveIntegerArgument },193            { name: 'options', type: actionOptions, init: initActionOptions, required: true }194        ];195    }196}197export class SelectEditableContentCommand extends Assignable {198    constructor (obj) {199        super(obj);200        this.type          = TYPE.selectEditableContent;201        this.startSelector = null;202        this.endSelector   = null;203        this.options       = null;204        this._assignFrom(obj, true);205    }206    _getAssignableProperties () {207        return [208            { name: 'startSelector', init: initSelector, required: true },209            { name: 'endSelector', init: initSelector },210            { name: 'options', type: actionOptions, init: initActionOptions, required: true }211        ];212    }213}214export class SelectTextAreaContentCommand extends Assignable {215    constructor (obj) {216        super(obj);217        this.type      = TYPE.selectTextAreaContent;218        this.selector  = null;219        this.startLine = null;220        this.startPos  = null;221        this.endLine   = null;222        this.endPos    = null;223        this.options   = null;224        this._assignFrom(obj, true);225    }226    _getAssignableProperties () {227        return [228            { name: 'selector', init: initSelector, required: true },229            { name: 'startLine', type: positiveIntegerArgument },230            { name: 'startPos', type: positiveIntegerArgument },231            { name: 'endLine', type: positiveIntegerArgument },232            { name: 'endPos', type: positiveIntegerArgument },233            { name: 'options', type: actionOptions, init: initActionOptions, required: true }234        ];235    }236}237export class PressKeyCommand extends Assignable {238    constructor (obj) {239        super(obj);240        this.type    = TYPE.pressKey;241        this.keys    = '';242        this.options = null;243        this._assignFrom(obj, true);244    }245    _getAssignableProperties () {246        return [247            { name: 'keys', type: nonEmptyStringArgument, required: true },248            { name: 'options', type: actionOptions, init: initActionOptions, required: true }249        ];250    }251}252export class NavigateToCommand extends Assignable {253    constructor (obj) {254        super(obj);255        this.type = TYPE.navigateTo;256        this.url  = null;257        this._assignFrom(obj, true);258    }259    _getAssignableProperties () {260        return [261            { name: 'url', type: urlArgument, required: true }262        ];263    }264}265export class SetFilesToUploadCommand extends Assignable {266    constructor (obj) {267        super(obj);268        this.type = TYPE.setFilesToUpload;269        this.selector = null;270        this.filePath = '';271        this._assignFrom(obj, true);272    }273    _getAssignableProperties () {274        return [275            { name: 'selector', init: (name, val) => initSelector(name, val, true), required: true },276            { name: 'filePath', type: stringOrStringArrayArgument, required: true }277        ];278    }279}280export class ClearUploadCommand extends Assignable {281    constructor (obj) {282        super(obj);283        this.type = TYPE.clearUpload;284        this.selector = null;285        this._assignFrom(obj, true);286    }287    _getAssignableProperties () {288        return [289            { name: 'selector', init: (name, val) => initSelector(name, val, true), required: true }290        ];291    }292}293export class SwitchToIframeCommand extends Assignable {294    constructor (obj) {295        super(obj);296        this.type     = TYPE.switchToIframe;297        this.selector = null;298        this._assignFrom(obj, true);299    }300    _getAssignableProperties () {301        return [302            { name: 'selector', init: initSelector, required: true }303        ];304    }305}306export class SwitchToMainWindowCommand {307    constructor () {308        this.type = TYPE.switchToMainWindow;309    }310}311export class SetNativeDialogHandlerCommand extends Assignable {312    constructor (obj) {313        super(obj);314        this.type          = TYPE.setNativeDialogHandler;315        this.dialogHandler = {};316        this._assignFrom(obj, true);317    }318    _getAssignableProperties () {319        return [320            { name: 'dialogHandler', init: initDialogHandler, required: true }321        ];322    }323}324export class GetNativeDialogHistoryCommand {325    constructor () {326        this.type = TYPE.getNativeDialogHistory;327    }328}329export class SetTestSpeedCommand extends Assignable {330    constructor (obj) {331        super(obj);332        this.type  = TYPE.setTestSpeed;333        this.speed = null;334        this._assignFrom(obj, true);335    }336    _getAssignableProperties () {337        return [338            { name: 'speed', type: setSpeedArgument, required: true }339        ];340    }...errorCheckCtl.js
Source:errorCheckCtl.js  
1angular.module('app').controller('ErrorCheckCtl', ['$window', '$scope', '$timeout', 'dsEdit', 'appPath', function ($window, $scope, $timeout, dsEdit, appPath) {2    var selectCtrl = fastmap.uikit.SelectController();3    $scope.initType = 0;4    /**5     * table表头é
置项6     * @type {string[]}7     */8    $scope.theadInfo = ['æ£æ¥è§å', 'é误ç级', 'é误对象', 'é误信æ¯', 'æ£æ¥æ¶é´', 'æ£æ¥ç®¡ç'];9    $scope.initTypeOptions = [10        {11            id: 0,12            label: ' æªä¿®æ¹'13        },14        {15            id: 1,16            label: ' ä¾å¤'17        },18        {19            id: 2,20            label: ' 确认ä¸ä¿®æ¹'21        },22        {23            id: 3,24            label: ' 确认已修æ¹'25        }26    ];27    /**28     * ä¿®æ¹tableåå
æ ¼æ¾ç¤ºçå®½åº¦é²æ¢å±æ§é¢æ¿å¼¹åºæ¤ååºç°åç´æ»å¨æ¡;29     */30    $scope.setTableCeilWidth = function () {31        var tableWidth = document.getElementById('errorCheckTable').clientWidth;32        $scope.descriptStyle = {33            width: (tableWidth - 60 - tableWidth * 0.06 - tableWidth * 0.05 - 110 - 110) + 'px',34            overflow: 'hidden',35            'text-overflow': 'ellipsis',36            'white-space': 'nowrap'37        };38    };39        /**40         * ä¿®æ¹æ£æ¥é¡¹ç¶æ41         * @param selectInd42         * @param rowid43         */44    $scope.changeType = function (selectInd, rowid) {45        dsEdit.updateCheckType(rowid, selectInd).then(function (data) {46            console.log('ä¿®æ¹æå');47            if ($scope.checkResultData.length > 1) {48                for (var i = 0; i < $scope.checkResultData.length; i++) {49                    if ($scope.checkResultData[i].id == rowid) {50                        $scope.checkResultData.splice(i, 1);51                        break;52                    }53                }54            } else {55                $scope.$emit('refreshCheckResult', true);56            }57        });58    };59    // éæ°è®¾ç½®éæ©å·¥å
·60    var resetToolAndMap = function () {61        var layerCtrl = fastmap.uikit.LayerController();62        var editLayer = layerCtrl.getLayerById('edit');63        var rdLink = layerCtrl.getLayerById('rdLink');64        var shapeCtrl = fastmap.uikit.ShapeEditorController();65        var tooltipsCtrl = fastmap.uikit.ToolTipsController();66        var eventCtrl = fastmap.uikit.EventController();67        eventCtrl.off(eventCtrl.eventTypes.GETLINKID); // æ¸
é¤select**ShapeCtrl.jsä¸çäºä»¶,鲿¢èåä¹é´äºä»¶éä¹±68        eventCtrl.off(eventCtrl.eventTypes.GETADADMINNODEID);69        eventCtrl.off(eventCtrl.eventTypes.GETNODEID);70        eventCtrl.off(eventCtrl.eventTypes.GETRELATIONID);71        eventCtrl.off(eventCtrl.eventTypes.GETTIPSID);72        eventCtrl.off(eventCtrl.eventTypes.GETFACEID);73        eventCtrl.off(eventCtrl.eventTypes.RESETCOMPLETE);74        eventCtrl.off(eventCtrl.eventTypes.GETBOXDATA);75        eventCtrl.off(eventCtrl.eventTypes.GETRECTDATA);76        eventCtrl.off(eventCtrl.eventTypes.GETFEATURE);77        if (map.floatMenu) {78            map.removeLayer(map.floatMenu);79            map.floatMenu = null;80        }81        map.scrollWheelZoom.enable();82        editLayer.drawGeometry = null;83        editLayer.clear();84        editLayer.bringToBack();85        shapeCtrl.shapeEditorResult.setFinalGeometry(null);86        shapeCtrl.shapeEditorResult.setOriginalGeometry(null);87        shapeCtrl.stopEditing();88        rdLink.clearAllEventListeners();89        if (tooltipsCtrl.getCurrentTooltip()) {90            tooltipsCtrl.onRemoveTooltip();91        }92        if (map.currentTool) {93            map.currentTool.disable(); // ç¦æ¢å½åçåè线å¾å±çäºä»¶æè·94        }95        if (selectCtrl.rowKey) {96            selectCtrl.rowKey = null;97        }98        $(editLayer.options._div).unbind();99    };100    /**101     * å®ä½å¹¶é«äº®æ¾ç¤ºè¦ç´ 102     * @param pid103     * @param type104     */105    $scope.showOnMap = function (pid, featType, checkResult) {106        resetToolAndMap();107        if (checkResult.geometry) {108            var coord = checkResult.geometry.replace(/\(|\)/g, '').split(',');109            var zoom = map.getZoom() < 17 ? 17 : map.getZoom();110            map.setView([parseFloat(coord[1]), parseFloat(coord[0])], zoom);111        }112        $scope.$emit('locatedOnMap', {113            objPid: pid,114            objType: featType.split('_').join('')115        });116    };117    // $scope.$on('highMappoi',highlighPoi);118    /** ************ æ°æ®æ ¼å¼å **************/119    /* æ£æ¥æ¶é´*/120    function getCreateData(a, rows) {121        return rows;122    }123    function getOption(b, rows) {124        return rows;125    }...checkResultSubModalCtl.js
Source:checkResultSubModalCtl.js  
1angular.module('app').controller('checkResultSubModalCtl', ['$window', '$scope', '$timeout', 'dsEdit', 'dsMeta', 'appPath', function ($window, $scope, $timeout, dsEdit, dsMeta, appPath) {2    var selectCtrl = fastmap.uikit.SelectController();3    var highRenderCtrl = new fastmap.uikit.HighRenderController();4    var objCtrl = fastmap.uikit.ObjectEditController();5    $scope.initType = 0;6    /**7     * table表头é
置项8     * @type {string[]}9     */10    $scope.theadInfo = ['æ£æ¥è§å', 'é误ç级', 'é误对象', 'é误信æ¯', 'æ£æ¥æ¶é´', 'æ£æ¥ç®¡ç'];11    $scope.initTypeOptions = [12        {13            id: 0,14            label: ' æªä¿®æ¹'15        },16        {17            id: 1,18            label: ' ä¾å¤'19        },20        {21            id: 2,22            label: ' 确认ä¸ä¿®æ¹'23        },24        {25            id: 3,26            label: ' 确认已修æ¹'27        }28    ];29    /**30     * æ¥æ¾æ£æ¥ç»æ31      */32    function getCheckResultData(num) {33        dsEdit.getRoadNameCheckResult(num).then(function (data) {34            if (data == -1) {35                return;36            }37            $scope.checkResultData = [];38            for (var i = 0, len = data.result.length; i < len; i++) {39                $scope.checkResultData.push(new FM.dataApi.IxCheckResult(data.result[i]));40                $scope.checkResultTotal = data.totalCount;41                $scope.checkPageTotal = data.totalCount > 0 ? Math.ceil(data.totalCount / 5) : 1;42            }43        });44       // dsMeta.columnDataList(num).then(function (data) {45       //     $scope.checkResultData = [];46       //     for (var i = 0, len = data.rows.length; i < len; i++) {47       //         $scope.checkResultData.push(new FM.dataApi.IxCheckResult(data.rows[i]));48       //         $scope.checkResultTotal = data.total;49       //         $scope.checkPageTotal = data.total > 0 ? Math.ceil(data.total / 5) : 1;50       //     }51       // })52    }53    initCheckResultData();54     /* åå§åæ£æ¥ç»ææ°æ®*/55    function initCheckResultData() {56        $scope.checkPageNow = 1; // æ£æ¥ç»æå½å页57        getCheckResultData(1);58//         $scope.outputResult = dsOutput.output; // è¾åºç»æ59    }60    /**61     * ä¿®æ¹tableåå
æ ¼æ¾ç¤ºçå®½åº¦é²æ¢å±æ§é¢æ¿å¼¹åºæ¤ååºç°åç´æ»å¨æ¡;62     */63    $scope.setTableCeilWidth = function () {64        var tableWidth = document.getElementById('checkResultTable').clientWidth;65        $scope.descriptStyle = {66            width: (tableWidth - 60 - tableWidth * 0.06 - tableWidth * 0.05 - 110 - 110) + 'px',67            overflow: 'hidden',68            'text-overflow': 'ellipsis',69            'white-space': 'nowrap'70        };71    };72        /**73         * ä¿®æ¹æ£æ¥é¡¹ç¶æ74         * @param selectInd75         * @param rowid76         */77    $scope.changeType = function (selectInd, rowid) {78        dsEdit.updateRdNCheckType(rowid, selectInd).then(function (data) {79            if (data) {80                console.log('ä¿®æ¹æå');81                if ($scope.checkResultData.length > 1) {82                    for (var i = 0; i < $scope.checkResultData.length; i++) {83                        if ($scope.checkResultData[i].id == rowid) {84                            $scope.checkResultData.splice(i, 1);85                            break;86                        }87                    }88                } else {89                    $scope.$emit('refreshCheckResult', true);90                }91            }92        });93    };94    /**95     * å±ç¤ºç¼è¾çé¢96     * @param pid97     * @param type98     */99    $scope.showDetail = function (id) {100        dsMeta.queryRdNByNameID(id).then(function (data) {101            if (data) {102                $scope.$emit('openEditPanel', data);103                $scope.closeSubModal();104            } else {105                swal('æç¤º', 'æªæ¥è¯¢å°æ°æ®', 'error');106            }107        });108    };109    /* 翻页äºä»¶ */110    $scope.turnPage = function (type) {111        if (type == 'prev') { // ä¸ä¸é¡µ112            $scope.$emit('trunPaging', 'prev');113        } else { //  ä¸ä¸é¡µ114            $scope.$emit('trunPaging', 'next');115        }116    };117    /**118     *  å·æ°æ£æ¥119     */120    $scope.refreshCheckResult = function () {121        initCheckResultData();122    };...deepParkingCtl.js
Source:deepParkingCtl.js  
1/**2 * Created by mali on 2016/5/31.3 */4angular.module('app').controller('deepParkingCtl', function ($scope) {5    var objectCtrl = fastmap.uikit.ObjectEditController();6    $scope.parkingBuildingType = FM.dataApi.Constant.PARKING_TYPE;7    $scope.tollStd = FM.dataApi.Constant.TOLLSTD;8    $scope.tollWay = FM.dataApi.Constant.TOLLWAY;9    $scope.remark = FM.dataApi.Constant.REMARK;10    /* æ¯ä»æ¹å¼*/11    $scope.paymentObj = FM.dataApi.Constant.PAYMENT;12    var initDeepData = function () {13        $scope.poi = objectCtrl.data;14        if ($scope.poi.parkings.length === 0) { // å¢å å车åºé»è®¤ä¸ºç©ºçæ
åµ15            $scope.poi.parkings[0] = new FM.dataApi.IxPoiParking({ pid: objectCtrl.data.pid, parkingType: '' }); // parkingTypeè¦æé»è®¤å¼ï¼å ä¸ºå¸¸è§POI深度信æ¯ä¿åæ¶ä¼æä¸ä¸ºç©ºç夿16        }17    };18    initDeepData();19    $scope.$on('reloadDeepData', function () {20        initDeepData();21    });22    $scope.tollStdChange = function (event) {23        var obj = $scope.poi.parkings[0].tollStd;24        var rejectVal = '5';25        if (event.target.value == rejectVal) {26            if (event.target.checked) {27                for (var key in obj) {28                    if (key != rejectVal) {29                        obj[key] = false;30                    }31                }32            }33        } else if (event.target.checked) {34            obj[rejectVal] = false;35        }36        // Utils.setCheckboxMutex(event, obj, rejectVal);37    };38    $scope.remarkChange = function (event) {39        var exclude = ['7', '11', '12', '14', '16', '17', '18']; // å'æ æ¡ä»¶å
è´¹'ä¸äºæ¥çå¼å40        var obj = $scope.poi.parkings[0].remark;41        var rejectVal = '0';42        if (event.target.value == rejectVal) {43            if (event.target.checked) {44                for (var key in obj) {45                    if (key != rejectVal && exclude.indexOf(key) < 0) {46                        obj[key] = false;47                    }48                }49            }50        } else if (event.target.checked && exclude.indexOf(event.target.value) < 0) {51            obj[rejectVal] = false;52        }53//        Utils.setCheckboxMutex(event,obj,rejectVal);54    };55    /**56     * é¨å屿§è½¬å
¨è§57     */58    $scope.desToDBC = function () {59        if ($scope.poi.parkings[0].tollDes) {60            $scope.poi.parkings[0].tollDes = Utils.ToDBC($scope.poi.parkings[0].tollDes);61        }62        if ($scope.poi.parkings[0].openTiime) {63            $scope.poi.parkings[0].openTiime = Utils.ToDBC($scope.poi.parkings[0].openTiime);64        }65    };66    $scope.initTypeOptions = [67        { id: 0, label: ' æªä¿®æ¹' },68        { id: 1, label: ' ä¾å¤' },69        { id: 2, label: ' 确认ä¸ä¿®æ¹' },70        { id: 3, label: ' 确认已修æ¹' }71    ];72    $scope.avgTotalNum = function () {73        var totalNum = $scope.poi.parkings[0].totalNum;74        if (!totalNum) {75            $scope.poi.parkings[0].totalNum = 0;76        }77    };...parkingCtl.js
Source:parkingCtl.js  
1/**2 * Created by mali on 2016/5/31.3 */4angular.module('app').controller('parkingCtl', function ($scope) {5    $scope.parkingBuildingType = FM.dataApi.Constant.PARKING_TYPE;6    $scope.tollStd = FM.dataApi.Constant.TOLLSTD;7    $scope.tollWay = FM.dataApi.Constant.TOLLWAY;8    $scope.remark = FM.dataApi.Constant.remark_ml;9    /* æ¯ä»æ¹å¼*/10    $scope.paymentObj = FM.dataApi.Constant.PAYMENT;11    $scope.tollStdChange = function (event) {12        var obj = $scope.poi.parkings[0].tollStd;13        var rejectVal = '5';14        Utils.setCheckboxMutex(event, obj, rejectVal);15    };16    $scope.remarkChange = function (event) {17        var obj = $scope.poi.parkings[0].remark;18        var rejectVal = '0';19        if (event.target.value == '0') {20            if (event.target.checked) {21                for (var key in obj) {22                    if (key != '0' && key != '7') {23                        obj[key] = false;24                    }25                }26            }27        } else if (event.target.checked && event.target.value != '7') {28            obj['0'] = false;29        }30//        Utils.setCheckboxMutex(event,obj,rejectVal);31    };32    $scope.test = function (event, obj, rejectVal1, rejectVal2) {33        for (var i = 0; i < rejectVal1.length; i++) {34            if (event.target.value == rejectVal1[i]) {35                if (event.target.checked) {36                    for (var j = 0; j < rejectVal2.length; j++) {37                        obj[rejectVal2[j]] = false;38                    }39                }40            }41        }42    };43    $scope.initTypeOptions = [44        { id: 0, label: ' æªä¿®æ¹' },45        { id: 1, label: ' ä¾å¤' },46        { id: 2, label: ' 确认ä¸ä¿®æ¹' },47        { id: 3, label: ' 确认已修æ¹' }48    ];...Using AI Code Generation
1import { Selector } from 'testcafe';2test('My first test', async t => {3        .typeText('#developer-name', 'John Smith')4        .click('#windows')5        .click('#submit-button');6});7test('My second test', async t => {8        .typeText('#developer-name', 'John Smith', { replace: true })9        .click('#windows')10        .click('#submit-button');11});12test('My third test', async t => {13        .typeText('#developer-name', 'John Smith', { replace: true })14        .click('#windows')15        .click('#submit-button');16});17test('My fourth test', async t => {18        .typeText('#developer-name', 'John Smith', { replace: true })19        .click('#windows')20        .click('#submit-button');21});22test('My fifth test', async t => {23        .typeText('#developer-name', 'John Smith', { replace: true })24        .click('#windows')25        .click('#submit-button');26});27test('My sixth test', async t => {28        .typeText('#developer-name', 'John Smith', { replace: true })29        .click('#windows')30        .click('#submit-button');31});32test('My seventh test', async t => {33        .typeText('#developer-name', 'John Smith', { replace: true })34        .click('#windows')35        .click('#submit-button');36});37test('My eighth test', async t => {38        .typeText('#developer-name', 'John Smith', { replace: true })39        .click('#windows')40        .click('#submit-button');41});42test('My ninth test', async t =>Using AI Code Generation
1import { Selector } from 'testcafe';2test('My first test', async t => {3        .typeText('#developer-name', 'John Smith')4        .click('#windows')5        .click('#submit-button');6});7import { Selector } from 'testcafe';8test('My first test', async t => {9        .typeText('#developer-name', 'John Smith')10        .click('#windows')11        .click('#submit-button');12});13import { Selector } from 'testcafe';14test('My first test', async t => {15        .typeText('#developer-name', 'John Smith')16        .click('#windows')17        .click('#submit-button');18});19import { Selector } from 'testcafe';20test('My first test', async t => {21        .typeText('#developer-name', 'John Smith')22        .click('#windows')23        .click('#submit-button');24});25import { Selector } from 'testcafe';26test('My first test', async t => {27        .typeText('#developer-name', 'John Smith')28        .click('#windows')29        .click('#submit-button');30});31import { Selector } from 'testcafe';32test('My first test', async t => {33        .typeText('#developer-name', 'John Smith')34        .click('#windows')35        .click('#submit-button');36});Using AI Code Generation
1import {Selector} from 'testcafe';2test('My first test', async t => {3        .typeText('#developer-name', 'John Smith')4        .click('#submit-button');5    const articleHeader = await Selector('.result-content').find('h1');6    let headerText = await articleHeader.innerText;7    console.log(headerText);8});9import {Selector} from 'testcafe';10test('My first test', async t => {11        .typeText('#developer-name', 'John Smith')12        .click('#submit-button');13    const articleHeader = await Selector('.result-content').find('h1');14    let headerText = await articleHeader.innerText;15    console.log(headerText);16});17import {Selector} from 'testcafe';18test('My first test', async t => {19        .typeText('#developer-name', 'John Smith')20        .click('#submit-button');21    const articleHeader = await Selector('.result-content').find('h1');22    let headerText = await articleHeader.innerText;23    console.log(headerText);24});25import {Selector} from 'testcafe';26test('My first test', async t => {27        .typeText('#developer-name', 'John Smith')28        .click('#submit-button');29    const articleHeader = await Selector('.result-content').find('h1');Using AI Code Generation
1import { Selector } from 'testcafe';2test('My Test', async t => {3    const initTypeOptions = Selector('input').with({ boundTestRun: t });4        .typeText(initTypeOptions, 'Peter Parker')5        .typeText(initTypeOptions, 'Spiderman')6        .typeText(initTypeOptions, 'New York')7        .typeText(initTypeOptions, 'How i wish, i could fly.');8});9import { Selector } from 'testcafe';10test('My Test', async t => {11    const initTypeOptions = Selector('input').with({ boundTestRun: t });12        .typeText(initTypeOptions, 'Clark Kent')13        .typeText(initTypeOptions, 'Superman')14        .typeText(initTypeOptions, 'Metropolis')15        .typeText(initTypeOptions, 'Up, up and away!');16});17 √ My Test (1m 15s)18 √ My Test (1m 15s)19 2 passed (2m 31s)Using AI Code Generation
1import { initTypeOptions } from 'testcafe';2test('test', async t => {3        .typeText('#input', 'test', initTypeOptions)4        .typeText('#input', 'test', { replace: true })5        .typeText('#input', 'test', { caretPos: 1 })6        .typeText('#input', 'test', { replace: true, caretPos: 1 });7});Using AI Code Generation
1import { initTypeOptions } from 'testcafe';2initTypeOptions({paste: true});3test('My Test', async t => {4        .typeText('#developer-name', 'Peter Parker')5        .typeText('#developer-name', 'Spiderman', {replace: true})6        .typeText('#developer-name', 'r', {caretPos: 2})7        .typeText('#developer-name', 'wo', {replace: true, caretPos: 5})8        .typeText('#developer-name', 'wo', {paste: true, replace: true, caretPos: 5})9        .typeText('#comments', 'This is a comment', {paste: true})10        .typeText('#comments', 'This is a comment', {replace: true})11        .typeText('#comments', 'This is a comment', {caretPos: 0})12        .typeText('#comments', 'This is a comment', {replace: true, caretPos: 0})13        .typeText('#comments', 'This is a comment', {paste: true, replace: true})14        .typeText('#comments', 'This is a comment', {paste: true, caretPos: 0})15        .typeText('#comments', 'This is a comment', {paste: true, replace: true, caretPos: 0})16        .typeText('#comments', 'This is a comment', {replace: true, caretPos: 10})17        .typeText('#comments', 'This is a comment', {paste: true, replace: true, caretPos: 10})18        .typeText('#comments', 'This is a comment', {paste: true, caretPos: 10})19        .typeText('#comments', 'This is a comment', {paste: true, replace: true, caretPos: 10});20});Using AI Code Generation
1import { Selector } from 'testcafe';2test('My Test', async t => {3    const select = Selector('select').with({ boundTestRun: t });4        .click(select)5        .click(select.find('option').withText('I have tried TestCafe'));6});7import { Selector } from 'testcafe';8test('My Test', async t => {9    const select = Selector('select').with({ boundTestRun: t });10        .click(select)11        .click(select.find('option').withText('I have tried TestCLearn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
