Warning, /education/gcompris/src/activities/analog_electricity/components/Resistor.qml is written in an unsupported language. File is not indexed.

0001 /* GCompris - Resistor.qml
0002  *
0003  * SPDX-FileCopyrightText: 2020 Aiswarya Kaitheri Kandoth <aiswaryakk29@gmail.com>
0004  *
0005  * Authors:
0006  *   Bruno Coudoin <bruno.coudoin@gcompris.net> (GTK+ version)
0007  *   Aiswarya Kaitheri Kandoth <aiswaryakk29@gmail.com> (Qt Quick port)
0008  *
0009  *   SPDX-License-Identifier: GPL-3.0-or-later
0010  */
0011 import QtQuick 2.12
0012 import GCompris 1.0
0013 import "../analog_electricity.js" as Activity
0014 
0015 ElectricalComponent {
0016     id: resistor // Ammeters to measure current and voltage
0017     terminalSize: 0.2
0018     noOfConnectionPoints: 2
0019     information: qsTr("Resistors are used to reduce the current flow in an electrical circuit.")
0020     //: 1st V for Voltage, 2nd V for Volt
0021     labelText1: qsTr("V = %1V").arg(componentVoltage)
0022     //: I for current intensity, A for Ampere
0023     labelText2: qsTr("I = %1A").arg(resistorCurrent)
0024     source: Activity.url + "resistor.svg"
0025 
0026     property var nodeVoltages: [0, 0]
0027     property double componentVoltage: 0
0028     property double resistorCurrent: 0
0029     property alias connectionPoints: connectionPoints
0030     property var connectionPointPosX: [0.1, 0.9]
0031     property var connectionPointPosY: [0.5, 0.5]
0032     property string componentName: "Resistor"
0033     property var internalNetlistIndex: [0, 0]
0034     property var externalNetlistIndex: [0, 0]
0035     property var netlistModel:
0036     [
0037         "r",
0038         [
0039         ],
0040         {
0041             "name": componentName,
0042             "r": "1000",
0043             "_json_": 0
0044         },
0045         [
0046             0,
0047             0
0048         ]
0049     ]
0050 
0051     Item {
0052         id: aMeter1
0053         property int jsonNumber: 0
0054         property double current: 0
0055         property var netlistModel:
0056         [
0057             "a",
0058             [
0059             ],
0060             {
0061                 "name": "aMeter1-",
0062                 "color": "magenta",
0063                 "offset": "0",
0064                 "_json_": aMeter1.jsonNumber
0065             },
0066             [
0067                 0,
0068                 0
0069             ]
0070         ]
0071     }
0072 
0073     Item {
0074         id: aMeter2
0075         property int jsonNumber: 0
0076         property double current: 0
0077         property var netlistModel:
0078         [
0079             "a",
0080             [
0081             ],
0082             {
0083                 "name": "aMeter2-",
0084                 "color": "magenta",
0085                 "offset": "0",
0086                 "_json_": aMeter2.jsonNumber
0087             },
0088             [
0089                 0,
0090                 0
0091             ]
0092         ]
0093     }
0094 
0095     Repeater {
0096         id: connectionPoints
0097         model: 2
0098         delegate: connectionPoint
0099         Component {
0100             id: connectionPoint
0101             TerminalPoint {
0102                 posX: connectionPointPosX[index]
0103                 posY: connectionPointPosY[index]
0104             }
0105         }
0106     }
0107 
0108     function checkConnections() {
0109         terminalConnected = 0;
0110         for(var i = 0; i < noOfConnectionPoints; i++) {
0111             if(connectionPoints.itemAt(i).wires.length > 0)
0112                 terminalConnected += 1;
0113         }
0114         if(terminalConnected >= 2) {
0115             resistor.showLabel = true;
0116         } else {
0117             resistor.showLabel = false;
0118         }
0119     }
0120 
0121     function updateValues() {
0122         resistorCurrent = (Math.abs(aMeter1.current)).toFixed(3);
0123         componentVoltage = (Math.abs(nodeVoltages[1] - nodeVoltages[0])).toFixed(2);
0124     }
0125 
0126     function initConnections() {
0127         var connectionIndex = Activity.connectionCount;
0128         resistor.externalNetlistIndex[0] = ++connectionIndex;
0129         connectionPoints.itemAt(0).updateNetlistIndex(connectionIndex);
0130         resistor.internalNetlistIndex[0] = ++connectionIndex;
0131         resistor.internalNetlistIndex[1] = ++connectionIndex;
0132         resistor.externalNetlistIndex[1] = ++connectionIndex;
0133         connectionPoints.itemAt(1).updateNetlistIndex(connectionIndex);
0134         Activity.connectionCount = connectionIndex;
0135     }
0136 
0137     function addToNetlist() {
0138         var netlistItem = aMeter1.netlistModel;
0139         Activity.netlistComponents.push(aMeter1);
0140         Activity.vSourcesList.push(aMeter1);
0141         netlistItem[2].name = "aMeter1-" + componentName;
0142         netlistItem[2]._json = Activity.netlist.length;
0143         netlistItem[3][0] = resistor.externalNetlistIndex[0];
0144         netlistItem[3][1] = resistor.internalNetlistIndex[0];
0145         Activity.netlist.push(netlistItem);
0146 
0147         netlistItem = resistor.netlistModel;
0148         Activity.netlistComponents.push(resistor);
0149         netlistItem[2].name = componentName;
0150         netlistItem[2]._json = Activity.netlist.length;
0151         netlistItem[3][0] = resistor.internalNetlistIndex[0];
0152         netlistItem[3][1] = resistor.internalNetlistIndex[1];
0153         Activity.netlist.push(netlistItem);
0154 
0155         netlistItem = aMeter2.netlistModel;
0156         Activity.netlistComponents.push(aMeter2);
0157         Activity.vSourcesList.push(aMeter2);
0158         netlistItem[2].name = "aMeter2-" + componentName;
0159         netlistItem[2]._json = Activity.netlist.length;
0160         netlistItem[3][0] = resistor.internalNetlistIndex[1];
0161         netlistItem[3][1] = resistor.externalNetlistIndex[1];
0162         Activity.netlist.push(netlistItem);
0163     }
0164 
0165     function checkComponentAnswer() {
0166         if(resistorCurrent > 0 && terminalConnected >= 2)
0167             return "resistorIn";
0168         else
0169             return "";
0170     }
0171 }
0172