Warning, /education/gcompris/src/activities/analog_electricity/components/Battery.qml is written in an unsupported language. File is not indexed.
0001 /* GCompris - Battery.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: battery 0017 terminalSize: 0.2 0018 noOfConnectionPoints: 2 0019 information: qsTr("Battery is used for powering up electrical devices. It can supply voltage in a closed circuit. Which means there should be a path for the current to flow from one terminal of the battery to the other.") + " " + qsTr("If the current in a circuit is too high then the battery can be damaged.") 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(current) 0024 source: Activity.url + "battery.svg" 0025 0026 property double componentVoltage: 0 0027 property var nodeVoltages: [0, 0] 0028 property double current: 0 0029 property alias connectionPoints: connectionPoints 0030 property var connectionPointPosY: [0.1, 0.9] 0031 property var connectionPointType: ["positive", "negative"] 0032 property string componentName: "Voltage" 0033 property var externalNetlistIndex: [0, 0] 0034 property var netlistModel: 0035 [ 0036 "v", 0037 [ 0038 ], 0039 { 0040 "name": componentName, 0041 "value": "dc(10)", 0042 "_json_": 0 0043 }, 0044 [ 0045 0, 0046 0 0047 ] 0048 ] 0049 0050 Repeater { 0051 id: connectionPoints 0052 model: 2 0053 delegate: connectionPoint 0054 Component { 0055 id: connectionPoint 0056 TerminalPoint { 0057 posX: 0.5 0058 posY: connectionPointPosY[index] 0059 terminalType: connectionPointType[index] 0060 } 0061 } 0062 } 0063 0064 function checkConnections() { 0065 terminalConnected = 0; 0066 for(var i = 0; i < noOfConnectionPoints; i++) { 0067 if(connectionPoints.itemAt(i).wires.length > 0) 0068 terminalConnected += 1; 0069 } 0070 0071 // show label only from level 6 or in free mode 0072 if(terminalConnected >= 2 && (!Activity.items.isTutorialMode || Activity.items.currentLevel >= 5)) { 0073 battery.showLabel = true; 0074 } else { 0075 battery.showLabel = false; 0076 } 0077 } 0078 0079 function updateValues() { 0080 componentVoltage = (Math.abs(nodeVoltages[1] - nodeVoltages[0])).toFixed(2); 0081 current = (Math.abs(current)).toFixed(3); 0082 // short circuit case 0083 if(Math.abs(current) > 1) { 0084 battery.source = Activity.url + "battery_dead.svg"; 0085 } else { 0086 battery.source = Activity.url + "battery.svg"; 0087 } 0088 } 0089 0090 function initConnections() { 0091 var connectionIndex = Activity.connectionCount; 0092 battery.externalNetlistIndex[0] = ++connectionIndex; 0093 connectionPoints.itemAt(0).updateNetlistIndex(connectionIndex); 0094 battery.externalNetlistIndex[1] = ++connectionIndex; 0095 connectionPoints.itemAt(1).updateNetlistIndex(connectionIndex); 0096 Activity.connectionCount = connectionIndex; 0097 } 0098 0099 function addToNetlist() { 0100 var netlistItem = battery.netlistModel; 0101 Activity.netlistComponents.push(battery); 0102 Activity.vSourcesList.push(battery); 0103 netlistItem[2].name = componentName; 0104 netlistItem[2]._json = Activity.netlist.length; 0105 netlistItem[3][0] = battery.externalNetlistIndex[0]; 0106 netlistItem[3][1] = battery.externalNetlistIndex[1]; 0107 Activity.netlist.push(netlistItem); 0108 } 0109 0110 function checkComponentAnswer() { 0111 if(terminalConnected >= 2) 0112 return "batteryIn"; 0113 else 0114 return ""; 0115 } 0116 }