Search
Search

Transaction: 7qf2bZo...8X6m

Receiver
Status
Succeeded
Transaction Fee
0.00083 
Deposit Value
0 
Gas Used
8 Tgas
Attached Gas
100 Tgas
Created
June 08, 2024 at 3:34:48pm
Hash
7qf2bZotENCDLuWr496SAf7vQWnJV1yNiGFXwtRC8X6m

Actions

Called method: 'set' in contract: social.near
Arguments:
{ "data": { "kirrruuusha.near": { "widget": { "New-Draft-0": { "": "State.init({\r\n accountIdContext: \"\",\r\n accountIdProps: \"\",\r\n mentorPhoto: \"\",\r\n mentorName: \"Mentor Name\",\r\n mentorPoints: 0,\r\n studentsCounter: 0,\r\n students: [],\r\n studentRequests: [],\r\n currentAppThemeMode: \"lightMode\",\r\n currentRoute: \"studentsPage\",\r\n profileName: \"\",\r\n profileDiscription: \"\",\r\n creatProfileName: \"\",\r\n creatProfileDiscription: \"\",\r\n addNewStudent: \"\",\r\n editDescription: \"\",\r\n ifAddStudent: true,\r\n studentArray: [],\r\n arreyWhitIndexForAddStudent: [],\r\n heashForDeletnumb: {},\r\n flagForFindStdudentByID: false,\r\n idFindStudent: \"\",\r\n vrifyOurStudent: \"\",\r\n});\r\n\r\nconst TecherPossibilities = {\r\n init: () => {\r\n const accountIdContext = context.accountId;\r\n if (!accountIdContext) {\r\n return \"No account ID\";\r\n }\r\n const accountIdProps = props.accountId;\r\n const profile = Social.getr(`${state.accountIdContext}/profile`);\r\n State.update({\r\n accountIdProps: accountIdProps,\r\n accountIdContext: accountIdContext,\r\n profileName: profile.name,\r\n profileDiscription: profile.discription,\r\n });\r\n },\r\n initProfile: () => {\r\n Social.set({\r\n profile: {\r\n name: state.creatProfileName,\r\n discription: state.creatProfileDiscription,\r\n },\r\n });\r\n },\r\n initNameProfile: () => {\r\n Social.set({\r\n profile: {\r\n name: state.creatProfileName,\r\n },\r\n });\r\n },\r\n initDiscriptionProfile: () => {\r\n Social.set({\r\n profile: {\r\n discription: state.creatProfileDiscription,\r\n },\r\n });\r\n },\r\n getStudent: (pageNumber, pageSize) => {\r\n // Рассчитываем начальный и конечный индексы для пагинации\r\n const startIndex = (pageNumber - 1) * pageSize;\r\n const endIndex = startIndex + pageSize;\r\n let studentArray = [];\r\n let arreyWhitIndexForAddStudent = [];\r\n let heashForDeletnumb = {};\r\n if (state.accountIdProps) {\r\n for (let i = startIndex; i < endIndex; i++) {\r\n const student = Social.get(`${state.accountIdProps}/mystudents/${i}`);\r\n if (student) {\r\n studentArray.push(student);\r\n heashForDeletnumb[student] = i;\r\n } else {\r\n arreyWhitIndexForAddStudent.push(i);\r\n }\r\n }\r\n } else {\r\n for (let i = startIndex; i < endIndex; i++) {\r\n const student = Social.get(`${state.accountIdContext}/mystudents/${i}`);\r\n if (student) {\r\n studentArray.push(student);\r\n heashForDeletnumb[student] = i;\r\n } else {\r\n arreyWhitIndexForAddStudent.push(i);\r\n }\r\n }\r\n }\r\n State.update({\r\n studentArray: studentArray,\r\n arreyWhitIndexForAddStudent: arreyWhitIndexForAddStudent,\r\n heashForDeletnumb: heashForDeletnumb,\r\n });\r\n },\r\n updateDiscription: (student) => {\r\n Social.set({\r\n profile: {\r\n discriptionsStudent: {\r\n [student]: state.editDescription,\r\n },\r\n },\r\n });\r\n },\r\n deleteStudent: (student) => {\r\n const indexForDeleteNumb = state.heashForDeletnumb[student];\r\n Social.set({\r\n mystudents: {\r\n [indexForDeleteNumb]: null,\r\n },\r\n myStudentsForFind: {\r\n [student]: false,\r\n },\r\n });\r\n },\r\n addStudent: () => {\r\n const newStudent = state.addNewStudent;\r\n const ifAlreadyHaveStudent = Social.get(\r\n `${state.accountIdContext}/myStudentsForFind/${newStudent}`\r\n );\r\n const sliceForVerification = newStudent.slice(\r\n newStudent.length - 5,\r\n newStudent.length\r\n );\r\n if (sliceForVerification == \".near\" && ifAlreadyHaveStudent != `true`) {\r\n let indexForAddStudent = 0;\r\n if (\r\n state.studentArray.length > 0 &&\r\n state.arreyWhitIndexForAddStudent.length > 0\r\n ) {\r\n indexForAddStudent = state.arreyWhitIndexForAddStudent[0];\r\n } else if (\r\n state.studentArray.length > 0 &&\r\n state.arreyWhitIndexForAddStudent.length == 0\r\n ) {\r\n while (state.arreyWhitIndexForAddStudent.length == 0) {\r\n const student = Social.get(\r\n `${state.accountIdContext}/mystudents/${indexForAddStudent}`\r\n );\r\n if (!student) {\r\n State.update({\r\n arreyWhitIndexForAddStudent: student,\r\n });\r\n break;\r\n }\r\n indexForAddStudent++;\r\n }\r\n } else if (\r\n state.studentArray.length == 0 &&\r\n !state.arreyWhitIndexForAddStudent.length == 0\r\n ) {\r\n indexForAddStudent = 0;\r\n }\r\n Social.set({\r\n mystudents: {\r\n [indexForAddStudent]: state.addNewStudent,\r\n },\r\n myStudentsForFind: {\r\n [newStudent]: true,\r\n },\r\n });\r\n State.update({\r\n ifAddStudent: true,\r\n });\r\n } else {\r\n State.update({\r\n ifAddStudent: false,\r\n });\r\n }\r\n },\r\n findStudentByID: () => {\r\n const idaccound = state.idFindStudent;\r\n const isOurStudent = Social.get(\r\n `${state.accountIdContext}/myStudentsForFind/${idaccound}`\r\n );\r\n if (isOurStudent == `true`) {\r\n State.update({\r\n vrifyOurStudent: idaccound,\r\n });\r\n } else {\r\n State.update({\r\n vrifyOurStudent: \"\",\r\n });\r\n }\r\n },\r\n};\r\n\r\nTecherPossibilities.init();\r\nTecherPossibilities.getStudent(1, 10);\r\n\r\nfunction descriptionForStudent(account_id) {\r\n const discriprionalIN = Social.get(`${account_id}/profile/discription`);\r\n return discriprionalIN;\r\n}\r\n\r\nfunction ourDescriptionForStudent(account_id) {\r\n const discriprionalIN = Social.get(\r\n `${state.accountIdContext}/profile/discriptionsStudent/${account_id}`\r\n );\r\n if (discriprionalIN == null) {\r\n return \"no info\";\r\n }\r\n return discriprionalIN;\r\n}\r\n\r\n//UI Kit Theme\r\nconst appTheme = {\r\n colors: () => {\r\n const currentThemeMode = state.currentAppThemeMode;\r\n const colors =\r\n currentThemeMode === \"lightMode\"\r\n ? {\r\n standartText: \"#000000\",\r\n backgroundColor: \"#FFFFFF\",\r\n primary: \"#000000\",\r\n secondary: \"rgba(255, 0, 0, 0)\",\r\n textBlack: \"#000000\",\r\n textWhite: \"#FFFFFF\",\r\n }\r\n : {\r\n standartText: \"#FFFFFF\",\r\n backgroundColor: \"#333333\",\r\n primary: \"#000000\",\r\n secondary: \"#FFFFFF\",\r\n textBlack: \"#000000\",\r\n textWhite: \"#FFFFFF\",\r\n };\r\n\r\n return colors;\r\n },\r\n fontSizes: {\r\n h1: \"2.5em\",\r\n h2: \"2em\",\r\n h3: \"1.75em\",\r\n h4: \"1.5em\",\r\n h5: \"1.25em\",\r\n h6: \"1em\",\r\n body: \"1em\",\r\n b1: \"1em\",\r\n b2: \"0.9em\",\r\n b3: \"0.8em\",\r\n },\r\n margins: {\r\n small: \"0.25em\",\r\n medium: \"0.5em\",\r\n large: \"1em\",\r\n xlarge: \"2em\",\r\n },\r\n paddings: {\r\n small: \"0.25em\",\r\n medium: \"0.5em\",\r\n large: \"1em\",\r\n xlarge: \"2em\",\r\n },\r\n borderRadius: {\r\n small: \"4px\",\r\n medium: \"8px\",\r\n large: \"20px\",\r\n circle: \"50%\",\r\n },\r\n};\r\nconst appThemeService = {\r\n switchToLightTheme: () =>\r\n State.update({\r\n currentAppThemeMode: \"lightMode\",\r\n }),\r\n switchToDarkTheme: () =>\r\n State.update({\r\n currentAppThemeMode: \"darkMode\",\r\n }),\r\n getTheme: () => appTheme,\r\n};\r\n\r\nconst Button = styled.button`\r\n background: ${appTheme.colors().primary};\r\n color: ${appTheme.colors().textWhite};\r\n font-size: ${appTheme.fontSizes.h6};\r\n margin: ${appTheme.margins.small};\r\n padding: ${appTheme.paddings.medium};\r\n width: 100%;\r\n border: none;\r\n border-radius: ${appTheme.borderRadius.large};\r\n align-self: center;\r\n &:hover{\r\n background:#333;\r\n } \r\n`;\r\n\r\nconst Body = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n background-color: ${appTheme.colors().backgroundColor};\r\n align-items: center; \r\n `;\r\n\r\nconst ProfileTab = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n background-color: ${appTheme.colors().backgroundColor};\r\n justify-content: center;\r\n align-items: center; \r\n`;\r\n\r\nconst uiKitComponents = {\r\n button: Button,\r\n body: Body,\r\n navigationBar: NavigationBar,\r\n profileTab: ProfileTab,\r\n};\r\n\r\nconst routes = {\r\n moduleA: \"vlmoon.near/widget/BOSModuleA\",\r\n moduleB: \"vlmoon.near/widget/BOSModuleB\",\r\n moduleC: \"vlmoon.near/widget/BOSModuleC\",\r\n moduleD: \"vlmoon.near/widget/BOSModuleD\",\r\n};\r\n\r\nfunction navigateToModule(moduleRoute) {\r\n State.update({\r\n currentRoute: moduleRoute,\r\n });\r\n}\r\n\r\nconst routesNavigator = {\r\n studentsPage: () => navigateToModule(\"studentsPage\"),\r\n};\r\n\r\nfunction getModuleDependencies(moduleRoute) {\r\n if (moduleRoute === \"studentsPage\") {\r\n return [\"studentsPage\"];\r\n }\r\n}\r\nconst dependencies = getModuleDependencies(state.currentRoute);\r\n\r\n//Pages\r\nconst pages = {\r\n studentsPage: <></>,\r\n myTeachersPage: (\r\n <>\r\n <h1>My Teachers</h1>\r\n </>\r\n ),\r\n};\r\n//\r\n\r\nif (state.accountIdProps) {\r\n return (\r\n <>\r\n <div\r\n style={{\r\n background:\r\n \"linear-gradient(-45deg, #5F8AFA, #FFFFFF, #FFFFFF, #FFFFFF, #A463B0)\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n padding: \"2rem\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n textAlign: \"center\",\r\n fontFamily: \"'Manrope', sans-serif\",\r\n }}\r\n >\r\n <h1 style={{ fontWeight: \"bold\" }}>Mentor HUB</h1>\r\n <h3>Make the world around you the better place</h3>\r\n <Widget\r\n src=\"mob.near/widget/ProfileImage\"\r\n props={{\r\n accountId: state.accountIdProps,\r\n style: { width: \"7rem\", height: \"7rem\" },\r\n className: \"mb-2\",\r\n imageClassName:\r\n \"rounded-circle w-100 h-100 img-thumbnail d-block\",\r\n thumbnail: false,\r\n }}\r\n />\r\n <h4\r\n style={{\r\n marginTop: \"20px\",\r\n }}\r\n >\r\n {state.accountIdProps}\r\n </h4>\r\n <h5\r\n style={{\r\n marginTop: \"20px\",\r\n }}\r\n >\r\n Find student by account_ID\r\n </h5>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n height: \"3em\",\r\n }}\r\n >\r\n <input\r\n type=\"text\"\r\n className=\"form-control\"\r\n placeholder=\"Input for find my student\"\r\n value={state.idFindStudent}\r\n onChange={(e) => State.update({ idFindStudent: e.target.value })}\r\n />\r\n <Button\r\n style={{\r\n width: \"100px\",\r\n }}\r\n onClick={TecherPossibilities.findStudentByID}\r\n >\r\n Find\r\n </Button>\r\n </div>\r\n {state.vrifyOurStudent && (\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n gap: \"10px\",\r\n margin: \"20px\",\r\n borderRadius: \"12px\",\r\n background: \"#fff\",\r\n border: \"1px solid #eceef0\",\r\n boxShadow: \"0px 1px 3px rgba(16, 24, 40, 0.1)\",\r\n overflow: \"hidden\",\r\n padding: \"16px\",\r\n }}\r\n >\r\n <div>\r\n <Widget\r\n src=\"near/widget/AccountProfile\"\r\n props={{ accountId: state.vrifyOurStudent }}\r\n />\r\n </div>\r\n <div>\r\n <h4>{descriptionForStudent(state.vrifyOurStudent)}</h4>\r\n </div>\r\n </div>\r\n )}\r\n <h3\r\n style={{\r\n marginTop: \"20px\",\r\n }}\r\n >\r\n Students\r\n </h3>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n margin: \"15px\",\r\n }}\r\n >\r\n {state.studentArray.map((student) => (\r\n <div\r\n key={student}\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n gap: \"20px\",\r\n margin: \"10px\",\r\n borderRadius: \"12px\",\r\n background: \"#fff\",\r\n border: \"1px solid #eceef0\",\r\n boxShadow: \"0px 1px 3px rgba(16, 24, 40, 0.1)\",\r\n overflow: \"hidden\",\r\n padding: \"16px\",\r\n }}\r\n >\r\n {/* Common elements for each student */}\r\n <div>\r\n <Widget\r\n src=\"near/widget/AccountProfile\"\r\n props={{ accountId: student }}\r\n />\r\n\r\n <div>\r\n <h4>{descriptionForStudent(student)}</h4>\r\n </div>\r\n <div>\r\n <h4>{ourDescriptionForStudent(student)}</h4>\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\nreturn (\r\n <div\r\n style={{\r\n background:\r\n \"linear-gradient(-45deg, #5F8AFA, #FFFFFF, #FFFFFF, #FFFFFF, #A463B0)\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n padding: \"2rem\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n textAlign: \"center\",\r\n fontFamily: \"'Manrope', sans-serif\",\r\n }}\r\n >\r\n <h1 style={{ fontWeight: \"bold\" }}>Mentor HUB</h1>\r\n <h3>Make the world around you the better place</h3>\r\n <Widget\r\n src=\"mob.near/widget/ProfileImage\"\r\n props={{\r\n accountId,\r\n style: { width: \"7rem\", height: \"7rem\" },\r\n className: \"mb-2\",\r\n imageClassName: \"rounded-circle w-100 h-100 img-thumbnail d-block\",\r\n thumbnail: false,\r\n }}\r\n />\r\n <h4>Hey, {state.profileName}</h4>\r\n\r\n <h5\r\n style={{\r\n marginTop: \"20px\",\r\n }}\r\n >\r\n Find student by account_ID\r\n </h5>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n height: \"3em\",\r\n }}\r\n >\r\n <input\r\n type=\"text\"\r\n className=\"form-control\"\r\n placeholder=\"Input for find my student\"\r\n value={state.idFindStudent}\r\n onChange={(e) => State.update({ idFindStudent: e.target.value })}\r\n />\r\n <Button\r\n style={{\r\n width: \"100px\",\r\n }}\r\n onClick={TecherPossibilities.findStudentByID}\r\n >\r\n Find\r\n </Button>\r\n </div>\r\n {state.vrifyOurStudent && (\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n gap: \"10px\",\r\n margin: \"20px\",\r\n borderRadius: \"12px\",\r\n background: \"#fff\",\r\n border: \"1px solid #eceef0\",\r\n boxShadow: \"0px 1px 3px rgba(16, 24, 40, 0.1)\",\r\n overflow: \"hidden\",\r\n padding: \"16px\",\r\n }}\r\n >\r\n <div>\r\n <Widget\r\n src=\"near/widget/AccountProfile\"\r\n props={{ accountId: state.vrifyOurStudent }}\r\n />\r\n </div>\r\n <input\r\n type=\"text\"\r\n className=\"form-control\"\r\n style={{\r\n height: \"3em\",\r\n }}\r\n placeholder=\"Input for edit description\"\r\n onBlur={(e) => State.update({ editDescription: e.target.value })}\r\n />\r\n <div>\r\n <h4>{descriptionForStudent(state.vrifyOurStudent)}</h4>\r\n </div>\r\n <div>\r\n <Button\r\n style={{ width: \"100px\" }}\r\n onClick={() => {\r\n TecherPossibilities.updateDiscription(state.vrifyOurStudent);\r\n }}\r\n >\r\n Edit\r\n </Button>\r\n <Button\r\n style={{ width: \"100px\" }}\r\n onClick={() => {\r\n TecherPossibilities.deleteStudent(state.vrifyOurStudent);\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n <Button\r\n style={{ width: \"100px\" }}\r\n onClick={() => {\r\n State.update({ vrifyOurStudent: null });\r\n }}\r\n >\r\n Close\r\n </Button>\r\n </div>\r\n </div>\r\n )}\r\n <h3\r\n style={{\r\n marginTop: \"20px\",\r\n }}\r\n >\r\n My Students\r\n </h3>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n margin: \"15px\",\r\n }}\r\n >\r\n {state.studentArray.map((student) => (\r\n <div\r\n key={student}\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n gap: \"20px\",\r\n margin: \"10px\",\r\n borderRadius: \"12px\",\r\n background: \"#fff\",\r\n border: \"1px solid #eceef0\",\r\n boxShadow: \"0px 1px 3px rgba(16, 24, 40, 0.1)\",\r\n overflow: \"hidden\",\r\n padding: \"16px\",\r\n }}\r\n >\r\n {state.showHiddenContent === student && (\r\n <div style={{ display: \"grid\" }}>\r\n <input\r\n type=\"text\"\r\n className=\"form-control\"\r\n style={{ height: \"3em\", width: \"8.5rem\" }}\r\n placeholder=\"Input for edit description\"\r\n onChange={(e) => {\r\n State.update({ editDescription: e.target.value });\r\n }}\r\n />\r\n <Button\r\n onClick={() => {\r\n TecherPossibilities.deleteStudent(student);\r\n }}\r\n style={{ width: \"100px\", marginLeft: \"1rem\" }}\r\n >\r\n Delete\r\n </Button>\r\n <Button\r\n style={{ width: \"100px\", marginLeft: \"1rem\" }}\r\n onClick={() => {\r\n TecherPossibilities.updateDiscription(student);\r\n }}\r\n >\r\n Edit\r\n </Button>\r\n {/* Button to close hidden content for the student */}\r\n <Button\r\n style={{ width: \"100px\", marginLeft: \"1rem\" }}\r\n onClick={() => State.update({ showHiddenContent: null })}\r\n >\r\n Hide Info\r\n </Button>\r\n </div>\r\n )}\r\n {/* Common elements for each student */}\r\n <div>\r\n <Widget\r\n src=\"near/widget/AccountProfile\"\r\n props={{ accountId: student }}\r\n />\r\n\r\n <div>\r\n <h4>{descriptionForStudent(student)}</h4>\r\n </div>\r\n <div>\r\n <h4>{ourDescriptionForStudent(student)}</h4>\r\n </div>\r\n </div>\r\n {/* Button to open hidden content for the student */}\r\n {state.showHiddenContent !== student && (\r\n <Button\r\n style={{ width: \"100px\" }}\r\n onClick={() => State.update({ showHiddenContent: student })}\r\n >\r\n More Info\r\n </Button>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n {/* Modal for adding a new student */}\r\n {state.showAddStudentModal && (\r\n <div\r\n style={{\r\n position: \"fixed\",\r\n top: 0,\r\n left: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n background: \"rgba(0, 0, 0, 0.5)\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n background: \"#fff\",\r\n padding: \"20px\",\r\n borderRadius: \"8px\",\r\n }}\r\n >\r\n <h3>Add New Student</h3>\r\n <input\r\n type=\"text\"\r\n className=\"form-control\"\r\n style={{ marginTop: \"10px\" }}\r\n placeholder=\"Input for add student\"\r\n value={state.addNewStudent}\r\n onChange={(e) => State.update({ addNewStudent: e.target.value })}\r\n />\r\n {!state.ifAddStudent && <h3>Some gone wrong. Not add</h3>}\r\n <Button\r\n onClick={() => {\r\n TecherPossibilities.addStudent(state.addNewStudent);\r\n State.update({ showAddStudentModal: false });\r\n }}\r\n style={{\r\n width: \"100px\",\r\n marginTop: \"10px\",\r\n }}\r\n >\r\n Add\r\n </Button>\r\n <Button\r\n onClick={() => State.update({ showAddStudentModal: false })}\r\n style={{\r\n width: \"100px\",\r\n }}\r\n >\r\n Cancel\r\n </Button>\r\n </div>\r\n </div>\r\n )}\r\n {/* Button to trigger the modal */}\r\n <Button\r\n onClick={() => State.update({ showAddStudentModal: true })}\r\n style={{\r\n alignSelf: \"end\",\r\n borderRadius: \"50%\",\r\n width: \"40px\",\r\n height: \"40px\",\r\n }}\r\n >\r\n +\r\n </Button>\r\n </div>\r\n </div>\r\n);\r\n" } } } } }

Transaction Execution Plan

Convert Transaction To Receipt
Gas Burned:
361 Ggas
Tokens Burned:
0.00004 
Receipt:
Predecessor ID:
Receiver ID:
Gas Burned:
7 Tgas
Tokens Burned:
0.00079 
Called method: 'set' in contract: social.near
Arguments:
{ "data": { "kirrruuusha.near": { "widget": { "New-Draft-0": { "": "State.init({\r\n accountIdContext: \"\",\r\n accountIdProps: \"\",\r\n mentorPhoto: \"\",\r\n mentorName: \"Mentor Name\",\r\n mentorPoints: 0,\r\n studentsCounter: 0,\r\n students: [],\r\n studentRequests: [],\r\n currentAppThemeMode: \"lightMode\",\r\n currentRoute: \"studentsPage\",\r\n profileName: \"\",\r\n profileDiscription: \"\",\r\n creatProfileName: \"\",\r\n creatProfileDiscription: \"\",\r\n addNewStudent: \"\",\r\n editDescription: \"\",\r\n ifAddStudent: true,\r\n studentArray: [],\r\n arreyWhitIndexForAddStudent: [],\r\n heashForDeletnumb: {},\r\n flagForFindStdudentByID: false,\r\n idFindStudent: \"\",\r\n vrifyOurStudent: \"\",\r\n});\r\n\r\nconst TecherPossibilities = {\r\n init: () => {\r\n const accountIdContext = context.accountId;\r\n if (!accountIdContext) {\r\n return \"No account ID\";\r\n }\r\n const accountIdProps = props.accountId;\r\n const profile = Social.getr(`${state.accountIdContext}/profile`);\r\n State.update({\r\n accountIdProps: accountIdProps,\r\n accountIdContext: accountIdContext,\r\n profileName: profile.name,\r\n profileDiscription: profile.discription,\r\n });\r\n },\r\n initProfile: () => {\r\n Social.set({\r\n profile: {\r\n name: state.creatProfileName,\r\n discription: state.creatProfileDiscription,\r\n },\r\n });\r\n },\r\n initNameProfile: () => {\r\n Social.set({\r\n profile: {\r\n name: state.creatProfileName,\r\n },\r\n });\r\n },\r\n initDiscriptionProfile: () => {\r\n Social.set({\r\n profile: {\r\n discription: state.creatProfileDiscription,\r\n },\r\n });\r\n },\r\n getStudent: (pageNumber, pageSize) => {\r\n // Рассчитываем начальный и конечный индексы для пагинации\r\n const startIndex = (pageNumber - 1) * pageSize;\r\n const endIndex = startIndex + pageSize;\r\n let studentArray = [];\r\n let arreyWhitIndexForAddStudent = [];\r\n let heashForDeletnumb = {};\r\n if (state.accountIdProps) {\r\n for (let i = startIndex; i < endIndex; i++) {\r\n const student = Social.get(`${state.accountIdProps}/mystudents/${i}`);\r\n if (student) {\r\n studentArray.push(student);\r\n heashForDeletnumb[student] = i;\r\n } else {\r\n arreyWhitIndexForAddStudent.push(i);\r\n }\r\n }\r\n } else {\r\n for (let i = startIndex; i < endIndex; i++) {\r\n const student = Social.get(`${state.accountIdContext}/mystudents/${i}`);\r\n if (student) {\r\n studentArray.push(student);\r\n heashForDeletnumb[student] = i;\r\n } else {\r\n arreyWhitIndexForAddStudent.push(i);\r\n }\r\n }\r\n }\r\n State.update({\r\n studentArray: studentArray,\r\n arreyWhitIndexForAddStudent: arreyWhitIndexForAddStudent,\r\n heashForDeletnumb: heashForDeletnumb,\r\n });\r\n },\r\n updateDiscription: (student) => {\r\n Social.set({\r\n profile: {\r\n discriptionsStudent: {\r\n [student]: state.editDescription,\r\n },\r\n },\r\n });\r\n },\r\n deleteStudent: (student) => {\r\n const indexForDeleteNumb = state.heashForDeletnumb[student];\r\n Social.set({\r\n mystudents: {\r\n [indexForDeleteNumb]: null,\r\n },\r\n myStudentsForFind: {\r\n [student]: false,\r\n },\r\n });\r\n },\r\n addStudent: () => {\r\n const newStudent = state.addNewStudent;\r\n const ifAlreadyHaveStudent = Social.get(\r\n `${state.accountIdContext}/myStudentsForFind/${newStudent}`\r\n );\r\n const sliceForVerification = newStudent.slice(\r\n newStudent.length - 5,\r\n newStudent.length\r\n );\r\n if (sliceForVerification == \".near\" && ifAlreadyHaveStudent != `true`) {\r\n let indexForAddStudent = 0;\r\n if (\r\n state.studentArray.length > 0 &&\r\n state.arreyWhitIndexForAddStudent.length > 0\r\n ) {\r\n indexForAddStudent = state.arreyWhitIndexForAddStudent[0];\r\n } else if (\r\n state.studentArray.length > 0 &&\r\n state.arreyWhitIndexForAddStudent.length == 0\r\n ) {\r\n while (state.arreyWhitIndexForAddStudent.length == 0) {\r\n const student = Social.get(\r\n `${state.accountIdContext}/mystudents/${indexForAddStudent}`\r\n );\r\n if (!student) {\r\n State.update({\r\n arreyWhitIndexForAddStudent: student,\r\n });\r\n break;\r\n }\r\n indexForAddStudent++;\r\n }\r\n } else if (\r\n state.studentArray.length == 0 &&\r\n !state.arreyWhitIndexForAddStudent.length == 0\r\n ) {\r\n indexForAddStudent = 0;\r\n }\r\n Social.set({\r\n mystudents: {\r\n [indexForAddStudent]: state.addNewStudent,\r\n },\r\n myStudentsForFind: {\r\n [newStudent]: true,\r\n },\r\n });\r\n State.update({\r\n ifAddStudent: true,\r\n });\r\n } else {\r\n State.update({\r\n ifAddStudent: false,\r\n });\r\n }\r\n },\r\n findStudentByID: () => {\r\n const idaccound = state.idFindStudent;\r\n const isOurStudent = Social.get(\r\n `${state.accountIdContext}/myStudentsForFind/${idaccound}`\r\n );\r\n if (isOurStudent == `true`) {\r\n State.update({\r\n vrifyOurStudent: idaccound,\r\n });\r\n } else {\r\n State.update({\r\n vrifyOurStudent: \"\",\r\n });\r\n }\r\n },\r\n};\r\n\r\nTecherPossibilities.init();\r\nTecherPossibilities.getStudent(1, 10);\r\n\r\nfunction descriptionForStudent(account_id) {\r\n const discriprionalIN = Social.get(`${account_id}/profile/discription`);\r\n return discriprionalIN;\r\n}\r\n\r\nfunction ourDescriptionForStudent(account_id) {\r\n const discriprionalIN = Social.get(\r\n `${state.accountIdContext}/profile/discriptionsStudent/${account_id}`\r\n );\r\n if (discriprionalIN == null) {\r\n return \"no info\";\r\n }\r\n return discriprionalIN;\r\n}\r\n\r\n//UI Kit Theme\r\nconst appTheme = {\r\n colors: () => {\r\n const currentThemeMode = state.currentAppThemeMode;\r\n const colors =\r\n currentThemeMode === \"lightMode\"\r\n ? {\r\n standartText: \"#000000\",\r\n backgroundColor: \"#FFFFFF\",\r\n primary: \"#000000\",\r\n secondary: \"rgba(255, 0, 0, 0)\",\r\n textBlack: \"#000000\",\r\n textWhite: \"#FFFFFF\",\r\n }\r\n : {\r\n standartText: \"#FFFFFF\",\r\n backgroundColor: \"#333333\",\r\n primary: \"#000000\",\r\n secondary: \"#FFFFFF\",\r\n textBlack: \"#000000\",\r\n textWhite: \"#FFFFFF\",\r\n };\r\n\r\n return colors;\r\n },\r\n fontSizes: {\r\n h1: \"2.5em\",\r\n h2: \"2em\",\r\n h3: \"1.75em\",\r\n h4: \"1.5em\",\r\n h5: \"1.25em\",\r\n h6: \"1em\",\r\n body: \"1em\",\r\n b1: \"1em\",\r\n b2: \"0.9em\",\r\n b3: \"0.8em\",\r\n },\r\n margins: {\r\n small: \"0.25em\",\r\n medium: \"0.5em\",\r\n large: \"1em\",\r\n xlarge: \"2em\",\r\n },\r\n paddings: {\r\n small: \"0.25em\",\r\n medium: \"0.5em\",\r\n large: \"1em\",\r\n xlarge: \"2em\",\r\n },\r\n borderRadius: {\r\n small: \"4px\",\r\n medium: \"8px\",\r\n large: \"20px\",\r\n circle: \"50%\",\r\n },\r\n};\r\nconst appThemeService = {\r\n switchToLightTheme: () =>\r\n State.update({\r\n currentAppThemeMode: \"lightMode\",\r\n }),\r\n switchToDarkTheme: () =>\r\n State.update({\r\n currentAppThemeMode: \"darkMode\",\r\n }),\r\n getTheme: () => appTheme,\r\n};\r\n\r\nconst Button = styled.button`\r\n background: ${appTheme.colors().primary};\r\n color: ${appTheme.colors().textWhite};\r\n font-size: ${appTheme.fontSizes.h6};\r\n margin: ${appTheme.margins.small};\r\n padding: ${appTheme.paddings.medium};\r\n width: 100%;\r\n border: none;\r\n border-radius: ${appTheme.borderRadius.large};\r\n align-self: center;\r\n &:hover{\r\n background:#333;\r\n } \r\n`;\r\n\r\nconst Body = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n background-color: ${appTheme.colors().backgroundColor};\r\n align-items: center; \r\n `;\r\n\r\nconst ProfileTab = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n background-color: ${appTheme.colors().backgroundColor};\r\n justify-content: center;\r\n align-items: center; \r\n`;\r\n\r\nconst uiKitComponents = {\r\n button: Button,\r\n body: Body,\r\n navigationBar: NavigationBar,\r\n profileTab: ProfileTab,\r\n};\r\n\r\nconst routes = {\r\n moduleA: \"vlmoon.near/widget/BOSModuleA\",\r\n moduleB: \"vlmoon.near/widget/BOSModuleB\",\r\n moduleC: \"vlmoon.near/widget/BOSModuleC\",\r\n moduleD: \"vlmoon.near/widget/BOSModuleD\",\r\n};\r\n\r\nfunction navigateToModule(moduleRoute) {\r\n State.update({\r\n currentRoute: moduleRoute,\r\n });\r\n}\r\n\r\nconst routesNavigator = {\r\n studentsPage: () => navigateToModule(\"studentsPage\"),\r\n};\r\n\r\nfunction getModuleDependencies(moduleRoute) {\r\n if (moduleRoute === \"studentsPage\") {\r\n return [\"studentsPage\"];\r\n }\r\n}\r\nconst dependencies = getModuleDependencies(state.currentRoute);\r\n\r\n//Pages\r\nconst pages = {\r\n studentsPage: <></>,\r\n myTeachersPage: (\r\n <>\r\n <h1>My Teachers</h1>\r\n </>\r\n ),\r\n};\r\n//\r\n\r\nif (state.accountIdProps) {\r\n return (\r\n <>\r\n <div\r\n style={{\r\n background:\r\n \"linear-gradient(-45deg, #5F8AFA, #FFFFFF, #FFFFFF, #FFFFFF, #A463B0)\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n padding: \"2rem\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n textAlign: \"center\",\r\n fontFamily: \"'Manrope', sans-serif\",\r\n }}\r\n >\r\n <h1 style={{ fontWeight: \"bold\" }}>Mentor HUB</h1>\r\n <h3>Make the world around you the better place</h3>\r\n <Widget\r\n src=\"mob.near/widget/ProfileImage\"\r\n props={{\r\n accountId: state.accountIdProps,\r\n style: { width: \"7rem\", height: \"7rem\" },\r\n className: \"mb-2\",\r\n imageClassName:\r\n \"rounded-circle w-100 h-100 img-thumbnail d-block\",\r\n thumbnail: false,\r\n }}\r\n />\r\n <h4\r\n style={{\r\n marginTop: \"20px\",\r\n }}\r\n >\r\n {state.accountIdProps}\r\n </h4>\r\n <h5\r\n style={{\r\n marginTop: \"20px\",\r\n }}\r\n >\r\n Find student by account_ID\r\n </h5>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n height: \"3em\",\r\n }}\r\n >\r\n <input\r\n type=\"text\"\r\n className=\"form-control\"\r\n placeholder=\"Input for find my student\"\r\n value={state.idFindStudent}\r\n onChange={(e) => State.update({ idFindStudent: e.target.value })}\r\n />\r\n <Button\r\n style={{\r\n width: \"100px\",\r\n }}\r\n onClick={TecherPossibilities.findStudentByID}\r\n >\r\n Find\r\n </Button>\r\n </div>\r\n {state.vrifyOurStudent && (\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n gap: \"10px\",\r\n margin: \"20px\",\r\n borderRadius: \"12px\",\r\n background: \"#fff\",\r\n border: \"1px solid #eceef0\",\r\n boxShadow: \"0px 1px 3px rgba(16, 24, 40, 0.1)\",\r\n overflow: \"hidden\",\r\n padding: \"16px\",\r\n }}\r\n >\r\n <div>\r\n <Widget\r\n src=\"near/widget/AccountProfile\"\r\n props={{ accountId: state.vrifyOurStudent }}\r\n />\r\n </div>\r\n <div>\r\n <h4>{descriptionForStudent(state.vrifyOurStudent)}</h4>\r\n </div>\r\n </div>\r\n )}\r\n <h3\r\n style={{\r\n marginTop: \"20px\",\r\n }}\r\n >\r\n Students\r\n </h3>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n margin: \"15px\",\r\n }}\r\n >\r\n {state.studentArray.map((student) => (\r\n <div\r\n key={student}\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n gap: \"20px\",\r\n margin: \"10px\",\r\n borderRadius: \"12px\",\r\n background: \"#fff\",\r\n border: \"1px solid #eceef0\",\r\n boxShadow: \"0px 1px 3px rgba(16, 24, 40, 0.1)\",\r\n overflow: \"hidden\",\r\n padding: \"16px\",\r\n }}\r\n >\r\n {/* Common elements for each student */}\r\n <div>\r\n <Widget\r\n src=\"near/widget/AccountProfile\"\r\n props={{ accountId: student }}\r\n />\r\n\r\n <div>\r\n <h4>{descriptionForStudent(student)}</h4>\r\n </div>\r\n <div>\r\n <h4>{ourDescriptionForStudent(student)}</h4>\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\nreturn (\r\n <div\r\n style={{\r\n background:\r\n \"linear-gradient(-45deg, #5F8AFA, #FFFFFF, #FFFFFF, #FFFFFF, #A463B0)\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n padding: \"2rem\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n textAlign: \"center\",\r\n fontFamily: \"'Manrope', sans-serif\",\r\n }}\r\n >\r\n <h1 style={{ fontWeight: \"bold\" }}>Mentor HUB</h1>\r\n <h3>Make the world around you the better place</h3>\r\n <Widget\r\n src=\"mob.near/widget/ProfileImage\"\r\n props={{\r\n accountId,\r\n style: { width: \"7rem\", height: \"7rem\" },\r\n className: \"mb-2\",\r\n imageClassName: \"rounded-circle w-100 h-100 img-thumbnail d-block\",\r\n thumbnail: false,\r\n }}\r\n />\r\n <h4>Hey, {state.profileName}</h4>\r\n\r\n <h5\r\n style={{\r\n marginTop: \"20px\",\r\n }}\r\n >\r\n Find student by account_ID\r\n </h5>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n height: \"3em\",\r\n }}\r\n >\r\n <input\r\n type=\"text\"\r\n className=\"form-control\"\r\n placeholder=\"Input for find my student\"\r\n value={state.idFindStudent}\r\n onChange={(e) => State.update({ idFindStudent: e.target.value })}\r\n />\r\n <Button\r\n style={{\r\n width: \"100px\",\r\n }}\r\n onClick={TecherPossibilities.findStudentByID}\r\n >\r\n Find\r\n </Button>\r\n </div>\r\n {state.vrifyOurStudent && (\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n gap: \"10px\",\r\n margin: \"20px\",\r\n borderRadius: \"12px\",\r\n background: \"#fff\",\r\n border: \"1px solid #eceef0\",\r\n boxShadow: \"0px 1px 3px rgba(16, 24, 40, 0.1)\",\r\n overflow: \"hidden\",\r\n padding: \"16px\",\r\n }}\r\n >\r\n <div>\r\n <Widget\r\n src=\"near/widget/AccountProfile\"\r\n props={{ accountId: state.vrifyOurStudent }}\r\n />\r\n </div>\r\n <input\r\n type=\"text\"\r\n className=\"form-control\"\r\n style={{\r\n height: \"3em\",\r\n }}\r\n placeholder=\"Input for edit description\"\r\n onBlur={(e) => State.update({ editDescription: e.target.value })}\r\n />\r\n <div>\r\n <h4>{descriptionForStudent(state.vrifyOurStudent)}</h4>\r\n </div>\r\n <div>\r\n <Button\r\n style={{ width: \"100px\" }}\r\n onClick={() => {\r\n TecherPossibilities.updateDiscription(state.vrifyOurStudent);\r\n }}\r\n >\r\n Edit\r\n </Button>\r\n <Button\r\n style={{ width: \"100px\" }}\r\n onClick={() => {\r\n TecherPossibilities.deleteStudent(state.vrifyOurStudent);\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n <Button\r\n style={{ width: \"100px\" }}\r\n onClick={() => {\r\n State.update({ vrifyOurStudent: null });\r\n }}\r\n >\r\n Close\r\n </Button>\r\n </div>\r\n </div>\r\n )}\r\n <h3\r\n style={{\r\n marginTop: \"20px\",\r\n }}\r\n >\r\n My Students\r\n </h3>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n margin: \"15px\",\r\n }}\r\n >\r\n {state.studentArray.map((student) => (\r\n <div\r\n key={student}\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n gap: \"20px\",\r\n margin: \"10px\",\r\n borderRadius: \"12px\",\r\n background: \"#fff\",\r\n border: \"1px solid #eceef0\",\r\n boxShadow: \"0px 1px 3px rgba(16, 24, 40, 0.1)\",\r\n overflow: \"hidden\",\r\n padding: \"16px\",\r\n }}\r\n >\r\n {state.showHiddenContent === student && (\r\n <div style={{ display: \"grid\" }}>\r\n <input\r\n type=\"text\"\r\n className=\"form-control\"\r\n style={{ height: \"3em\", width: \"8.5rem\" }}\r\n placeholder=\"Input for edit description\"\r\n onChange={(e) => {\r\n State.update({ editDescription: e.target.value });\r\n }}\r\n />\r\n <Button\r\n onClick={() => {\r\n TecherPossibilities.deleteStudent(student);\r\n }}\r\n style={{ width: \"100px\", marginLeft: \"1rem\" }}\r\n >\r\n Delete\r\n </Button>\r\n <Button\r\n style={{ width: \"100px\", marginLeft: \"1rem\" }}\r\n onClick={() => {\r\n TecherPossibilities.updateDiscription(student);\r\n }}\r\n >\r\n Edit\r\n </Button>\r\n {/* Button to close hidden content for the student */}\r\n <Button\r\n style={{ width: \"100px\", marginLeft: \"1rem\" }}\r\n onClick={() => State.update({ showHiddenContent: null })}\r\n >\r\n Hide Info\r\n </Button>\r\n </div>\r\n )}\r\n {/* Common elements for each student */}\r\n <div>\r\n <Widget\r\n src=\"near/widget/AccountProfile\"\r\n props={{ accountId: student }}\r\n />\r\n\r\n <div>\r\n <h4>{descriptionForStudent(student)}</h4>\r\n </div>\r\n <div>\r\n <h4>{ourDescriptionForStudent(student)}</h4>\r\n </div>\r\n </div>\r\n {/* Button to open hidden content for the student */}\r\n {state.showHiddenContent !== student && (\r\n <Button\r\n style={{ width: \"100px\" }}\r\n onClick={() => State.update({ showHiddenContent: student })}\r\n >\r\n More Info\r\n </Button>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n {/* Modal for adding a new student */}\r\n {state.showAddStudentModal && (\r\n <div\r\n style={{\r\n position: \"fixed\",\r\n top: 0,\r\n left: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n background: \"rgba(0, 0, 0, 0.5)\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n background: \"#fff\",\r\n padding: \"20px\",\r\n borderRadius: \"8px\",\r\n }}\r\n >\r\n <h3>Add New Student</h3>\r\n <input\r\n type=\"text\"\r\n className=\"form-control\"\r\n style={{ marginTop: \"10px\" }}\r\n placeholder=\"Input for add student\"\r\n value={state.addNewStudent}\r\n onChange={(e) => State.update({ addNewStudent: e.target.value })}\r\n />\r\n {!state.ifAddStudent && <h3>Some gone wrong. Not add</h3>}\r\n <Button\r\n onClick={() => {\r\n TecherPossibilities.addStudent(state.addNewStudent);\r\n State.update({ showAddStudentModal: false });\r\n }}\r\n style={{\r\n width: \"100px\",\r\n marginTop: \"10px\",\r\n }}\r\n >\r\n Add\r\n </Button>\r\n <Button\r\n onClick={() => State.update({ showAddStudentModal: false })}\r\n style={{\r\n width: \"100px\",\r\n }}\r\n >\r\n Cancel\r\n </Button>\r\n </div>\r\n </div>\r\n )}\r\n {/* Button to trigger the modal */}\r\n <Button\r\n onClick={() => State.update({ showAddStudentModal: true })}\r\n style={{\r\n alignSelf: \"end\",\r\n borderRadius: \"50%\",\r\n width: \"40px\",\r\n height: \"40px\",\r\n }}\r\n >\r\n +\r\n </Button>\r\n </div>\r\n </div>\r\n);\r\n" } } } } }
Result:
{ "block_height": "120718317" }
No logs
Receipt:
Predecessor ID:
Receiver ID:
Gas Burned:
223 Ggas
Tokens Burned:
0 
Transferred 0.01798  to kirrruuusha.near
Empty result
No logs