Warning, /education/kalgebra/mobile/content/ui/Tables.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2015 by Aleix Pol <aleixpol@kde.org> 0002 // SPDX-License-Identifier: GPL-2.0-or-later 0003 0004 import QtQuick 0005 import QtQuick.Layouts 0006 import org.kde.analitza 0007 import QtQuick.Controls as QQC2 0008 import org.kde.kirigami as Kirigami 0009 import org.kde.kalgebra.mobile 0010 0011 Kirigami.ScrollablePage { 0012 title: i18n("Value tables") 0013 0014 property ListModel resultsModel: ListModel {} 0015 0016 function calculateTable() { 0017 resultsModel.clear(); 0018 0019 var tmp = a.unusedVariableName() 0020 var ret = a.insertVariable(tmp, a.dependenciesToLambda(input.text)) 0021 var ffrom = from.realValue, fto=to.realValue, fstep=step.realValue; 0022 // console.log("chancho (" + ffrom + ", " + fto + " : " + fstep + ") " + ret); 0023 if((fto-ffrom>0)!=(fstep>0)) { 0024 fstep *= -1; 0025 step.value = fstep 0026 } 0027 // console.log("chancho2 (" + ffrom + ", " + fto + " : " + fstep + ") " + ret); 0028 0029 if(fstep===0) { 0030 resultsModel.append( { element: i18n("Errors: The step cannot be 0") } ); 0031 } else if(ffrom === fto) { 0032 resultsModel.append( { element: i18n("Errors: The start and end are the same") } ); 0033 } else if(!a.isCorrect) { 0034 resultsModel.append( { element: i18n("Errors: %1", ret ? ret : a.errors) } ); 0035 } else { 0036 for (var i=ffrom; i<=fto && i>=ffrom && a.isCorrect; i+=fstep) { 0037 var args = new Array(); 0038 args[0]=i; 0039 var expr = a.executeFunc(tmp, args); 0040 resultsModel.append( { element: i +" = "+ expr.expression } ); 0041 } 0042 } 0043 0044 a.removeVariable(tmp); 0045 applicationWindow().pageStack.push("qrc:/TableResultPage.qml", { 0046 'results': resultsModel 0047 }); 0048 } 0049 0050 actions: QQC2.Action { 0051 icon.name: 'dialog-ok' 0052 text: i18nc("@action:button Run table", "Run") 0053 onTriggered: calculateTable() 0054 } 0055 0056 Analitza { 0057 id: a 0058 variables: App.variables 0059 } 0060 0061 Kirigami.FormLayout { 0062 QQC2.TextField { 0063 Kirigami.FormData.label: i18n("Input") 0064 id: input 0065 text: "sin x"; 0066 Layout.fillWidth: true 0067 onAccepted: calculateTable(); 0068 } 0069 RealInput { 0070 id: from; 0071 text: "0"; 0072 Kirigami.FormData.label: i18n("From:") 0073 Layout.fillWidth: true; 0074 onAccepted: calculateTable() 0075 } 0076 RealInput { 0077 id: to; 0078 text: "10"; 0079 Kirigami.FormData.label: i18n("To:") 0080 Layout.fillWidth: true; 0081 onAccepted: calculateTable() 0082 } 0083 0084 RealInput { 0085 id: step; 0086 Kirigami.FormData.label: i18n("Step") 0087 text: "1"; 0088 Layout.fillWidth: true; 0089 onAccepted: calculateTable() 0090 } 0091 QQC2.Button { 0092 text: i18n("Run") 0093 onClicked: calculateTable() 0094 visible: !Kirigami.Settings.isMobile 0095 } 0096 } 0097 }