![]() |
![]() |
You are not logged in. Please Login.
|
cgetty
![]() ![]() Login to contact | |
General
Joined: 2013-12-25Posts made: 95Homepage: http:// Status:
Administrator / Programming / King Email: not publicLocation: usa texas |
Contact
![]() ![]() ![]() ![]() ![]() |
In topic "Nag Hammadi at a glance"
|
---|
mp3 here Click to play right click to save as play time about 3 min If you wish you may coment below. If you want me to know who you are at least leve your first name. The Nag Hammadi for dummies ![]() I was making an attempt to teach my 17 year old son about the Nag Hammadi text. So I got a tablet and a pencil and this is what I came up with. keep in mind I'm learning these things for the first time myself. At the very top we have the true source the unnamable Creator. a creator who seems to be a bit abstract from our incarnated perspective. Just below the source are a number of aeons. I used to think aeons were just a period of time but apparently they can refer to entitys also. The last one to the right is Pistis Sophia. Normally when the aeons create something they're supposed to work in conjunction with the source. well Sophia decided to go it on her own and it didn't turn out so well. the result of her effort was referred to as being like an aborted featus. So what does Sophia do.... the same thing we would have probably done.... try to sweep it under the carpet and that's what she did. but in time everything was revealed regarding the situation. So from my perspective this seems to be the analogy of the fall of humanity. This is the start of the material universe of polarity. and the name of the one that Sophia gave birth to was called yaldabaoth. Now yaldabaoth was ignorant he believed that he was the only one and that beyond him there was no other. It's like a branch that's been pruned from the tree oh... it's still has some life in it the leaves are still green or some fruit on it but in time it will wither and die. But in short order he was clued in that that wasn't the case. there were others above him. In spite of that yaldabaoth created many like him in his image. separated from the source. needing to be vampirizing other souls in order for them to sustain their existence, because now they are like the branch that's been severed from the tree. Yes even though yaldabaoth is a troublemaker he didn't ask to come into existence.... Sophia has to deal with this. So after a lot of rigmarole takes place a solution is proposed in order for souls to be redeemed to be able to ascend back to the source. to be grafted back into the tree. Reincarnation comes on to the scene. the only problem is those who could be called service to self keep resisting. they don't want to cooperate. that are just trying to vamperize others. As it turns out it seems like The reincarnation solution was hijacked by the service to self group. There are some reports that this reincarnation rence and repeat cycle has been going on for hundreds of thousands of years. The way I think it was supposed to work was that there was consciousness different levels of consciousness and in these levels of consciousness people were supposed to grow and higher levels of consciousness raising their frequency and at some point they would be able to break free of The reincarnation cycle. In the drawing when you look at the levels of consciousness just like little circles on these circles represent soul groups and apparently depending on how high you raise your frequency you go to that group where you have the same frequency as others like you. So in my little drawing below the levels of consciousness you see if you spaceships and some planets and low and behold the Earth, and the Earth has people inside of it and you'll notice it one pops out? Surrounding his Head there are question marks. he's not sure what has happened.... well he just died and there's some character saying hey go to the light and then if he goes to the light he gets sucked in he does a Life review it's like a soul trap they say just one more time and he goes back inside the Earth for another incarnation. I suppose it's like a merry-go-round when you were little you went on merry-go-rounds and they were fun but as an adult today would you get on a Merry-Go-Round no it just doesn't appeal to us I think that's what's going to happen with these service to self people they're just going to get tired and at some point they'll come around I guess we just have to be patient |
In topic "Welcome to the shoe string forum"
|
No need to log in or register (in this area) Have a comment or a question ? You can use the "Quick Reply" below at the bottom of this page. Or you can post it in a new thread by creating a new topic. Because your posting a message as "guest" If you want me to know who you are don't forget to leave your first name or "handle". Welcome ---------------------------------- ![]() ![]() All post below this one will be removed after a while |
In topic "CrossUI Forum is back up"
|
---|
As of 2.7.24 CrussUi Forum is back up. https://crossui.com/community/ |
In topic ""
|
Topic was moved to forum : CrossUI General You should be redirected in 2 seconds. If not, click here. |
In topic "Introduction to an older version before CrossUI"
|
I wish I had the screen cast software I used to make this demo video. This is a video I made back around 2009. This software reminds me of Delphi. But instead of working on a specific operation platform UI Builder seems to be based on javascript, the internet. This type of software seems to be targeted toward the Citizen developers. For more on that go here. These are the type of demos that might spark peoples interest. What do YOU think? As of 11.19.23 you can check out the older version here. vb3builder.atwebpages.com/vb3/ The software has been upgraded. It is now called CrossUi you can check it out here. https://www.crossui.com/RAD/ There are many new features. ![]() |
In topic "Sample progects ideas using CrossUI"
|
![]() - A project using MQTT - Making Components slimier to Delphi - Away to hook up a SQL light database that's easy - A project that can read a file in the directory Jason loaded up in a grid. Make edits to the grid and have the ability to save it back to the file after you make changes (after editing the grid). |
In topic "General Observations About CrossUI"
|
These are my observations about the software CrossUI. Around the time 2008/2009 I work for the city of Azusa and the electrical department electric meters. Since meters stop being mechanical and started being electronic well then software came to my life and I started to learn about software and using it at my work with the meters and keeping track of records and databases and so on. I ran across some software called sigma widgets or something like that. it was basically a javascript that you could use easily plug onto a HTML page and it looked pretty good and it was via the Internet I liked it. Around 2009 I ran across UI Builder. The person who developed this his name is Jack Lee. He comes from China and he had a little bit of effort in regards to the language and I can appreciate that. In spite of that the UI Builder program that he made it was very good I liked it it reminded me of Delphi or other types of software that was like drag and drop components onto a pallet and then push a button and you could run it on the internet. But unlike Delphi which was specifically made for the Windows operating system they tried a version for PHP and aversion for Linux but they didn't go anywhere. But I like the idea. Writing for a specific platform like Windows or Linux or Unix or whatever you're confined to that operating system kind of a slave to it. Of course in the case of like javascript for example that seems to be targeted towards people who use the internet instead of a specific operating system. although javascript operates different it takes things off the internet loads them on to your client machine that you're working on and then it sends things back and forth to the internet and that's how it works basically seems to me. I think of software kind of like an art like people who write music or do poetry or draw I think there's something that draws me to software development. Of course when I did my job at the city and the electric department it wasn't a full-time part of my job so I was able to enjoy it with less pressure. But because it wasn't my main focus I never got really under the hood of the nuts and the bolts I tried to learn c I tried to learn Pascal I tried to learn basic I tried to learn javascript I tried to learn a lot of stuff. But in my case I just started to get under the surface and then I would hit walls and roadblocks and technology changes in the internet or the operating system and eventually you put it down and then you come back later and you work it until you make some more progress and then that cycle seems to go on. It's not so bad if you can keep making upward progression but when you get to a flat spot where you get no support there's no user base you got other things to do in life you just got to you know do what you can. I think Jack Lee is I'd consider him probably being a genius. in 2009 I don't know if it was him alone but he seemed to be the major player in the development of UI Builder. The last version I got my hands on was version 3 and then he switched over to using an upgraded version which he calls CrossUI. And it seems to me that the version of UI Builderr ver 3 that I have includes the source code it was an open project I think at the time now it is not but it was then I think. And CrossUI he made many improvements in the framework whatever you want to call the IDE. I still use UI Builder because I learned how to work the IDE and I can get certain things done with it. I also use a newer version of CrossUI because of the many improvements he added to it. And with CrossUI you are you can do cross-platform so you can put it on Windows you could put it I think on Linux or you could apply to the internet I'm talking about when you deploy it. There are many many examples that Jack Lee put out with both versions. he has an example of a full-fledged order entry system using mySQL database. And there are many snippets of code examples that you could also learn from. With a program like Delphi it was dumb down quite a bit in a good way. if I wanted to use a database I just plop a database component on my pallet and I could hook things up to it and it was easy to make an application and whatever would run on Windows and I functioned well that way for a while. But I came to the conclusion that writing for a specific operating system probably wasn't the best way and to just write applications it would be able to be used on the internet was probably a more generic way a better way. Of course humans cannot seem to leave anything alone they always got to keep messing with it and technology is just part of life I suppose but with software you always going to have to keep updating it either the version of PHP that you're using going to get old or some standard in the Dom for the Internet's going to change and you just got to keep on board with these things otherwise you get left behind. And of course that's not such a bad thing if you're not under pressure you're savoring the experience and the changes that happen through technology that are good are not so bad. it's the it's a commercialization of the product that makes me irritated people put a lot of things in there just to make a buck course everybody's got to make a living things that are not necessary and they get added into the standard and then you have to confront it at some point. life such as it is. I remember with Delphi, Delphi had a good user base a lot of people had websites that dealt with Delphi and Delphi had this concept of components I don't know that they came up with it but they use this concept of components. where they could make a little encapsulated pieces of software that you could pop down on the pallet and do some really cool things with making it easier to throw applications together. Of course the people who wrote the components they had to be really good at the nuts and bolts about writing software it was not a visual experience for the most part it was something that you had to do with a text editor and you had to know what you were doing otherwise it didn't work. Delphi in my experience work good from version 1 to version 7 then after that it just went down the drain. I suspect it has to do with just competition in business things work for a while and other competitors would get in there and they promote something different in the world goes on. I remember hearing Steve Jobs mentioned one time that he didn't like the concept of flash so he didn't allow it on any of his operating system which in turn kind of changed the events of the world of software in a direction that perhaps wasn't the best. And of course there's all sorts of powerful / influential people that make decisions like that that have effects on the world that we work with in regards to software. But if you're good at the nuts and bolts and you know what you're doing well then that's not such a problem because there's a workaround for everything. So in regards to CrossUI I think that many people who use the new IDE are basically what I would refer to as citizen developers. people who don't really get too far under the hood into the nuts and bolts of it. People who get into the nuts and bolts of it and write good software and a text editor and can do it and have a good understanding of software probably wouldn't use that type of IDE drag and drop framework I mean not too much. Without much knowledge you could throw some windows on and some tabs and things and make it look pretty on the internet and deploy easily but it's just not going to have much substance to it if you you aren't able to connect it to a database or do certain clever things with the software. So in a nutshell as of November 2023 these are some of my thoughts about CrossUI software and software in general |
In topic "CrossUI Tips and tricks Requested"
|
For those brave souls who don't mind helping newer ones After I get enough of them I hope to organize the better, But for now they will be on this post. ![]() Request for tip This one is something I want to know how to do but I don't know how to yet. Reflecting a path of a URL and displaying it in a ctl_panel in the caption property for example. I would like the program to be running for about 10 seconds (a certain amount of time) and then show the URL. For example: I load a json file from the web like mobile1.onlinewebshop.net/cat1/meg/data/data.json The URL is what I would like to paste into a caption property for example. ![]() Request for tip Code snip-it that acting as a timer. That shows a count down. After reaching 0 some action is taken. Also there should be a time delay before the timer starts. ![]() |
In topic "CrossUI Tips and tricks offered"
|
I started doing this back with the predecessor of CrossUI UI Builder. Now CrossUI has the ability to format many of the proprieties just fine. The snip-it of code below (what shall we call it HTML content ?) can be pasted directly into a caption property. You can for example do this with a form caption or a messages and a few others (just experiment). <b><font color="#0000ff">Menu editor </font><font color="#8a2be2">Updated </font><font color="#ff0000">6/7/24</font><font color="#8a2be2"> </font></b><br> I think this way of "Extended formatting" should be kept simple. If it is too elaborate it may break your code, or at least enter unexpected side effects into your program. If you go to https://www.crossui.com/RAD/ and open the project "elmo ross Extended Formatting" you can see an example of how it works. |
In topic "links to some programs I have on line"
|
splash-screen-code.txt Deep seek === splash.html === <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Splash Screen</title> <style> /* Splash screen styles */ body { margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; height: 100vh; background-color: #000; color: #fff; font-family: Arial, sans-serif; } .splash-content { text-align: center; } .splash-content img { max-width: 100%; max-height: 80vh; } .splash-content h1 { font-size: 2.5rem; margin: 20px 0; } .splash-content p { font-size: 1.2rem; } </style> </head> <body> <div class="splash-content"> <!-- Image will be injected here dynamically --> <img src="" alt="Splash Screen Image"> <h1>Welcome to the UI Builder</h1> <p>Loading your application, please wait...</p> </div> </body> </html> === splash.js === // App/components/splash/splash.js class SplashScreen { constructor(imageDirectory, splashHtmlPath, duration = 3000) { this.imageDirectory = imageDirectory; // Directory containing images this.splashHtmlPath = splashHtmlPath; // Path to the splash HTML file this.duration = duration; // Duration in milliseconds (default: 3 seconds) this.currentIndex = 0; // Track the current image index this.images = []; // Store loaded image paths this.splashElement = null; // Reference to the splash screen DOM element } // Load all images from the directory async loadImages() { try { const response = await fetch(this.imageDirectory); const text = await response.text(); const parser = new DOMParser(); const htmlDocument = parser.parseFromString(text, "text/html"); const imageFiles = Array.from(htmlDocument.querySelectorAll("a")) .map((link) => link.href) .filter((href) => /.(png|jpg|jpeg|gif)$/i.test(href)); // Filter image files this.images = imageFiles; } catch (error) { console.error("Failed to load images:", error); } } // Load the splash screen HTML file async loadSplashHtml() { try { const response = await fetch(this.splashHtmlPath); const html = await response.text(); return html; } catch (error) { console.error("Failed to load splash screen HTML:", error); return null; } } // Display the splash screen async show() { if (this.images.length === 0) { await this.loadImages(); } if (this.images.length === 0) { console.error("No images found in the directory. Skipping splash screen."); return; // Skip the splash screen if no images are found } const splashHtml = await this.loadSplashHtml(); if (!splashHtml) { console.error("Splash screen HTML not found. Skipping splash screen."); return; // Skip the splash screen if the HTML file fails to load } // Log the image being loaded console.log("Loading image:", this.images[this.currentIndex]); // Create a container for the splash screen this.splashElement = document.createElement("div"); this.splashElement.style.position = "fixed"; this.splashElement.style.top = "0"; this.splashElement.style.left = "0"; this.splashElement.style.width = "100%"; this.splashElement.style.height = "100%"; this.splashElement.style.zIndex = "1000"; this.splashElement.innerHTML = splashHtml; // Inject the current image into the splash screen const imgElement = this.splashElement.querySelector("img"); if (imgElement) { // Construct the correct image path const imagePath = `./App/components/splash/graphics/${this.images[this.currentIndex]}`; imgElement.src = imagePath; console.log("Image path:", imagePath); // Log the image path for debugging } // Append the splash screen to the body document.body.appendChild(this.splashElement); // Cycle to the next image for the next run this.currentIndex = (this.currentIndex + 1) % this.images.length; // Hide the splash screen after the specified duration setTimeout(() => { this.hide(); }, this.duration); } // Hide the splash screen hide() { if (this.splashElement) { document.body.removeChild(this.splashElement); this.splashElement = null; } } } // Export the SplashScreen class for use in other modules export default SplashScreen; === Debugging Steps === 1. Ensure the image file (`delphi.helment.jpg`) exists in: C:xampphtdocsvb3VisualJSprojectsbuilder_my_try1Appcomponentssplashgraphicsdelphi.helment.jpg 2. Check the browser console (F12) for: - "Loading image:" log to verify the correct image is being loaded. - "Image path:" log to verify the correct path is being used. 3. If the image still doesn't load: - Verify the image file exists at the specified path. - Check the Network tab in the browser's developer tools for errors. === Notes === - The `splash.html` file defines the splash screen layout and styling. - The `splash.js` file handles loading and displaying the splash screen. - The `graphics` directory contains the images for the splash screen. |
In topic "It would be nice if things worked this way"
|
---|
This is how it works fore some people, I'll take it anytime!! |
In topic "They have to tell up befoe they do it to us?"
|
|
In topic "Texas Cold snap "week from hell""
|
Energy / Weather Update From Somerser Texas ![]() ![]() ![]() ![]() ![]() ![]() ![]() Most who have been paying the attention to the weather were aware that the temperature was going to be in the teens. In my neck of the woods it got as low as 10 degrees. Snow everywhere out side. First time for us since we moved here from Calif in 2012. I heard reports of issues with under frequency. and rolling power outages. Looks like it weather related. Keep in mind this is a dynamic situation and things are always changing (power stats) ![]() ![]() |
In topic "Random thoughts Clark July 22nd 2021"
|
Some thoughts I had this morning Just some thoughts that came across my mind this morning no need to respond, just thought I'd share. Life is like a beautiful machine a delicate mechanism that worked perfectly. Like a clock with gears all connected to each other all working in harmony. John Schroeder associated with the Edgar Casey's group once said that part of the purpose of our existence is to be friends and true companions of the creator, I agree with that. It appears that some one (which is really you and me, all is one, Source pushed out) decided that we could tinker with this delicate mechanism and improve on it. In spite of being warned WE tinkered with the mechanism and now it stopped working the way it was supposed to. It's like a branch that's been pruned from the tree oh it's still has some life in it. The leaves are still green or some fruit on it but in time it will wither and die. It would seem that for most of us that our goal is to try to become regrafted to the source of life. Another thing I learning in this incarnation is that truth does not seem to be found all in one place it's not like you can look under a rock and say "hey there it is". I watch the video the other day and the person mentioned that where we focus our attention is what we draw to us sharing that we create our own reality. I agree with that statement too. So I guess ultimately our goal is to be on our journey and try to discern what is truth make application of the truth that we learn in our lives. Practice the Golden rule. Focus on positive things and then perhaps we will fair pretty well in this incarnation. Of course being a service to others is very important in addition to balance. So these are my thoughts for today on July 22nd 2021 and I wanted to share them with you and yours. Clark ---------------------------------- ![]() |
In topic "Paula White and Kenneth Copeland rap"
|
A video mix / rap staring Paula White & Kennith Copland ![]() ![]() I don't follow the path of these two. Each picks their own path. I have nothing to say negitave regarding them. I liked the snappy head bobing tune. Well done who ever made this video. ![]() |
In topic "Wanker Bell"
|
Ringing the wanker bell
Clickimage to view video ![]() You can right click on the video to download it, the server dose not render it well. elmoross.atwebpages.com/av/wankerbell.mp4 When I saw this video regarding the coronavirus treatment (yes this is satire) showing the shaman and this woman smacking the Bell. There seems to be a bell tide to a string. And the string is also tide to the mans penis. It seemed pretty (funny / silly). To many this ritual would seem ridiculous. And unless one was on some kind of a psychedelic drug (not in their right mind) Most people would not likely take part in this kind ritual. Many see the Hyperbolic parallel between this video and the way the people running this clown show (the world as we know it) are acting. The coronavirus it would seem obvious probably to many people (by this time) that there's an agenda, people are being coerced by the president by governors by peoples religions, local governments (world wide deep state) to get this vaccination like it's the only solution to the problem. From my perspective I don't believe there is a problem. Yeah somebody's directing this orchestrating all this that's obvious to me. People need to do there own research. Take for example just one. Dr David Martin PHD. I have seen many of the videos that he has put on line I've seen about 5 that convinced me that this Covid crap is BS!!! David names names and spells it all out. And he is just one source, There are hundreds of additional sources ( that I have personalty looked into, that show the same thing. Its all Bull *censor*. Anyway people will believe what every they chose to believe. Everyone has right to make their own choice. Also the perspective of people changes over time. I also believe that people have the right to make their own decisions regardless of weather (we / I) believes they are right or wrong. In the bible someone asked what was the most important commandment. Jesus said love God with your whole heart and mind and to love your neighbor as your self. I think that pretty much sums it up. |
In topic "Electrical interference via harmonics"
|
![]() ![]() I think this lady is very passionate in her sharing of this information and enthusiastic. I think that she references a lot of material that is verifiable if you want to go out and check it some of it I'm familiar with some not. I think it's one of those deals where it's very very deep most people will just have their eyes gloss over after watching this video asking themselves well what can I do about it? This woman is into some very heavy stuff and I wouldn't dismiss it easily. Thank you for sharing really cool. Regarding power quality in general here are some of my observations. First of all I have worked for the electric utility in the electric test department as a test technician for 31 years. And so I have been exposed to the concept of signals sine waves frequency equipment that you buy that generates frequencies that can affect us refrigerators motors things of that nature. As of this time in my life I feel that everything is based on frequency humans the world we live in the universe frequencies. I can't speak to many of the things that this woman talked about because they are topics that I am not very familiar with. But during the time when electric meters like the kind on your house that you read changed from mechanical gears for the most part two electronics well things have changed a lot. I remember back in 1995 we were going to install telephone modems when it became available but phones in our meters so that we could call them and read them. And I remember reading some research where the European standards for cell phones were much higher than those of the American or us standards. Some of this was due to the fact that the American standards to my opinion they're looking to cut corners so when it came to radio frequencies and health they weren't so concerned with it because it cost more money to make these things safer. For example during the time I worked at the electric utility we would get calls for power quality issues. And some of these factories like Rain Bird ( They make water sprinklers for your lawn) was one and they were other company's that called us for help. They had these machines / controllers they used in production to make their product. We would set up very expensive monitoring equipment and try to track down any power quality issues. Some of these machines were variable speed motor controllers. And the way they would control the motor speed was by controlling the frequency going to the device. They would use electronics in order to control the speed of the motor by slicing up the sine wave and only letting it run during certain portions of the sine wave. Early on in the production of these issues occurred, I don't think it was intentional at the time but in order to save money on the early electronic devices, there were certain components that could have been installed to mitigate these frequencies that caused electrical interference (when you chop up the sine wave and you manipulate the electricity like that other harmonics are generated which can cause interference or affect your health.) but because of the extra cost manufacturers didn't initially install these to save money. So by slicing the sine wave and only letting the motor run for a certain part of the sine wave turning it on and off very quickly that action in itself generated new harmonics (frequencies). most of the time the interference generated could be distributed all over the power system that you were hooked to. So if you had a computer monitor in one room which was considered sensitive equipment and the guy was running the motor controlling the speed of it in the other room because they're on the same electrical circuit or system on the same transformer these harmonics were generated back and forth not even to the same building but anybody hooked to that distribution transformer. There could be 10 or 15 customers connected to the same a distribution transformer and they would all get this generated noise (electrical interference). Because this issue regarding power quality got out of hand pretty quick the rules and standards changed forcing the manufacturers of such equipment to mitigate these issues which cost more money but hey they had to fix it. That's just an example of something I experienced first hand during my time working in the electric utility. Also when electronic meters for revenue meters (like the kind on the side of your house that you get a bill for using the electricity) became electronic there were many people that became concerned and complained regarding the frequencies (harmonics or electrical interference) generated by these electric meters. Of course today we have electronic components in our house we have the internet they are frequencies flying all around in your house out of your house definitely we're being infected by these no doubt. To the extent that we're being affected by these things well the people causing the problems are not going to speak up and tell you the straight up truth I don't suspect, they're going to downplay as much as possible because a lot and fix it because that cost money. and I wouldn't be surprised if there were some people like three letter agencies of our government that have a darker intention is regards these signals for eavesdropping for spying for harming people intentionally I would not be surprised at all. I'm sure that you've seen videos on YouTube they talk about people who received vaccination then they were able to be registered via a Bluetooth as a result of the vaccine I've seen those videos. Are they fake or are they real well we just choose to believe what we want. I suspect that there are some people governments that would stoop to doing things to harm others using electricity intentionally. |
In topic "Hurricane Helene 2024"
|
Death toll reaches 225 The death toll from Hurricane Helene has reached at least 225, according to The Associated Press. ![]() Hurricane Helene laid waste to the southeastern United States. Its sheer wind force and deadly floods left behind a path of destruction stretching over 500 miles from Florida to the Southern Appalachians. Communities were cut off and stranded as floodwaters washed away hundreds of roads, buildings, homes and vehicles. Communication infrastructure is in shreds. Millions of people have also lost power and access to water across at least six states. Helene’s path of devastation started on Florida’s Gulf Coast, as it traveled to the Big Bend. At 11:10 p.m. on September 26, it made landfall near the city of Perry as a powerful Category 4 hurricane and brought record-breaking storm surge late into the night. |
In topic "Code sample from CrossUI GetHub"
|
---|
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title</title> <script src="https://crossui.com/libs/3.0/js/xui-all.js"></script> </head> <body> <div style=" background-color:#0a6aa1; height: 500px;"></div> <div style=" background-color:#0b2e13; height: 500px;"></div> <div style=" background-color:#0a6aa1; height: 500px;"></div> <div style=" background-color:#0b2e13; height: 500px;"></div> <div style=" background-color: #1da1f2; height: 100px;"> <button type="button" onclick="a()">aaaaaaa</button> <button type="button" onclick="b()">bbbbb</button> <button type="button" onclick="c()">cccccc</button> <button type="button" onclick="c()">ddddd</button> </div> <div id="aaa" style=" background-color: #3f9532; height: 500px;"> 1.I need the pop-up window to show above this position<br> 2.The scroll bar of the page remains unchanged when the pop-up window is closed<br> </div> </body> <script> function a() { xui.echo("abc"); } function b() { var dlg = (new xui.UI.Dialog).show(null, false, 100, 100); (new xui.UI.Dialog).show(dlg.reBoxing(), true, 100, 100); } function c() { var dlg = (new xui.UI.Dialog).show(); } function d() { var dlg = (new xui.UI.Dialog).show(xui("aaa")); } </script> </html> |
In topic "linb Tabs"
|
Go to a particular tab _button1_onclick:function (profile, e, src, value) { this.tabTest1.setValue('a',true); }, ns.ctl_image_smallredlk.updateItem("e",{hidden:false}); .setVisibility("visible") ns.ctl_image_smallredlk.updateItem({hidden:false}); ns.ctl_image_smallredlk.setVisibility('hidden'); linb When editing tabs (adding or removing don't use the jason editor, do it in the code. Long string ![]() This code works to click on a image and make it hidden _ctl_image4_onclick : function(profile,e,src){ this.ctl_image4.setVisibility('hidden'); } |
// Simple Animate // The default code is a com class (inherited from linb.Com) Class('App', 'linb.Com',{ // Ensure that all the value of "key/value pair" does not refer to external variables Instance:{ // To initialize instance(e.g. properties) initialize : function(){ // To determine whether or not the com will be destroyed, when the first UI control be destroyed this.autoDestroy = true; // To initialize properties this.properties = {}; }, // To initialize internal components (mostly UI controls) // *** If you're not a skilled, dont modify this function manually *** iniComponents : function(){ // [[code created by jsLinb UI Builder var host=this, children=[], append=function(child){children.push(child.get(0))}; append( (new linb.UI.SButton) .setHost(host,"ctl_sbutton1") .setLeft(130) .setTop(70) .setCaption("click me") .onclick("_ctl_sbutton1_onclick") ); return children; // ]]code created by jsLinb UI Builder }, // Give a chance to load other com iniExComs : function(com, threadid){ }, // Give a chance to determine which UI controls will be appended to parent container customAppend : function(parent, subId, left, top){ // "return false" will cause all the internal UI controls will be added to the parent panel return false; }, // This instance's events events : {}, _ctl_sbutton1_onclick : function (profile, e, src, value) { linb.Dom.animate({backgroundColor : '#ff0000'}, { left : [0,200], top : [0,300], width : [30,300], height : [30,300], opacity : [1,0] }, null,null,500,50,'sineOut').start() } } }); |
This is GOOD loads file to grid This code shows how to load a json file from anywhere. This code comes from this program. ImportFoodItemsToGridFromfile _ctl_buttonviews1_oninipanelview : function (profile, item) { var ns=this; if(item.id=='json'){ xui.Ajax("http://vb4.xp3.biz/cathy/data/data.json","",function(rsp){ // xui.Ajax("data/data.json","",function(rsp){ var data =rsp; if(!data)alert("no data"); else{ if(data.header) ns.treegrid1.setHeader(data.header); if(data.rows) ns.treegrid1.setRows(data.rows); } }).start(); } }, Update note. running this in the ide of crossui can read the data file http://vb4.xp3.biz/cathy/data/data.json. But when I deploy on the web only can read from same domain |
In topic "Citizen Developers"
|
---|
I should have provided the source URL where I got this information from, sorry Low-code and no-code are software development approaches that aim to simplify the process of building applications. These tools provide a visual interface and pre-built components, allowing users with limited programming knowledge, often referred to as citizen developers, to create software applications. Citizen developers are individuals who are not traditional programmers but possess domain knowledge or expertise in a specific area. With low-code and no-code tools, citizen developers can leverage their expertise to build applications without having to write extensive code. The benefits of low-code and no-code for citizen developers are numerous. These tools empower individuals to quickly turn their ideas into functioning applications, without the need for extensive coding knowledge. This democratizes the development process, allowing non-technical users to actively contribute to software creation. Furthermore, low-code and no-code platforms often provide a wide range of pre-built components and integrations, reducing the time and effort required for development. Citizen developers can easily drag and drop these components to create workflows and functionality, saving significant development time. Additionally, low-code and no-code tools promote collaboration between citizen developers and professional developers. These platforms allow them to work together on application development, bringing together the expertise of both technical and non-technical individuals. In summary, low-code and no-code tools enable citizen developers to participate in the software development process by providing intuitive visual interfaces and pre-built components. They offer numerous benefits, including faster application development, increased collaboration, and the democratization of software creation. The rest of this article it just a comparison of different Low Code / No Code software. ![]() Here, you will find the best open-source self-hosted Low- and No-code platforms for citizen developer teams, and indviduals. 1- ToolJet ToolJet is an open-source low-code platform that allows users to build web applications without writing code. It provides a visual interface for designing and developing applications using pre-built components and templates. With ToolJet, users can create custom workflows, forms, and dashboards, and connect to various data sources. It aims to simplify the application development process and empower users with limited coding experience to build powerful web applications. GitHub - ToolJet/ToolJet: Low-code platform for building business applications. Connect to databases, cloud storages, GraphQL, API endpoints, Airtable, Google sheets, OpenAI, etc and build apps using drag and drop application builder. Built using javascript/Typescript. 2- Nocobase Nocobase is an open-source platform that allows users to rapidly build and deploy enterprise-grade applications. It provides a flexible data modeling system, powerful API capabilities, and a customizable user interface. Nocobase's users can easily create and manage databases, define data models, and build complex applications that meet their specific needs. It is designed to streamline the development process and provide a robust foundation for building scalable and secure applications. 3- Appsmith Appsmith is an open-source platform that enables users to build and deploy custom internal tools and applications. It offers a visual interface for creating user interfaces, connecting to data sources, and building workflows. Appsmith allows users to build applications without writing code and provides a range of pre-built components and integrations. It is designed to simplify the process of building internal tools and empower users to create powerful applications quickly. GitHub - appsmithorg/appsmith: Platform to build admin panels, internal tools, and dashboards. Integrates with 15+ databases and any API. 4- Orienteer Orienteer is an open-source platform that provides a set of tools for building business applications. It offers features such as data visualization, analytics, and workflow automation. Orienteer aims to simplify the development process and empower users to create robust and scalable business applications. GitHub - OrienteerBAP/Orienteer: Business Application Platform - no-code/low-code platform to build business applications Business Application Platform - no-code/low-code platform to build business applications - GitHub - OrienteerBAP/Orienteer: Business Application Platform - no-code/low-code platform to build busine… GitHubOrienteerBAP 5- Retool ILLA illa-builder is an open-source platform for building web applications. It provides a flexible and customizable framework for designing and developing applications. With illa-builder, users can create dynamic user interfaces, connect to various data sources, and build complex workflows. It aims to simplify the application development process and empower users to create powerful and intuitive web applications. 6- CoCreateJS CoCreateJS is an open-source framework for building real-time collaborative web applications. It provides a set of tools and libraries that enable users to create interactive and collaborative experiences on the web. CoCreateJS enables users to build applications with real-time updates, live collaboration, and synchronized data across multiple devices. It aims to simplify the process of building collaborative web applications and empower users to create engaging and interactive experiences. 7- CrossUI CrossUI is an open-source platform for building cross-platform applications. It provides a visual interface for designing and developing applications that can run on multiple platforms, including web, desktop, and mobile. With CrossUI, users can create user interfaces, connect to data sources, and build complex workflows without writing code. It aims to simplify the process of building cross-platform applications and empower users to create versatile and powerful applications. GitHub - linb/CrossUI: CrossUI is a free Cross-Browser javascript framework with cutting-edge functionality for rich web application CrossUI is a free Cross-Browser javascript framework with cutting-edge functionality for rich web application - GitHub - linb/CrossUI: CrossUI is a free Cross-Browser javascript framework with cutt… GitHublinb 8- basetool baseTool is an open-source platform that offers a range of tools and features for building web applications. It provides a visual interface for designing user interfaces, connecting to data sources, and building workflows. baseTool's users can create custom applications without writing code and leverage pre-built components and templates. It aims to simplify the application development process and empower users to build powerful web applications efficiently. GitHub - basetool-io/basetool: Open-source internal tool framework. Empower your team and collaborators to view and manage the data you already own in a nice easy-to-use protected tool. basetool helps you have a better handle on your data in a collaborative way so you can focus on moving your business forward. Open-source internal tool framework. Empower your team and collaborators to view and manage the data you already own in a nice easy-to-use protected tool. basetool helps you have a better handle… GitHubbasetool-io 9- Streamsync StreamSync is an open-source platform that enables real-time collaboration and synchronization of data across multiple devices. It provides a set of tools and features for building collaborative web applications and interactive experiences. Some of its key features include: Real-time updates: StreamSync allows users to see changes made by others in real-time, providing a seamless collaborative experience. Live collaboration: Users can work together on the same document or project simultaneously, making it easy to collaborate and communicate effectively. Synchronized data: StreamSync ensures that data is synchronized across multiple devices, allowing users to access and interact with the latest information from anywhere. Version control: The platform offers version control capabilities, allowing users to track changes, revert to previous versions, and collaborate on different branches of a project. Customizable user interface: StreamSync provides a customizable user interface, allowing developers to tailor the platform to meet their specific needs and branding requirements. StreamSync is designed to simplify the development process of collaborative web applications and empower users to create engaging and interactive experiences with real-time collaboration capabilities. GitHub - streamsync-cloud/streamsync: No-code in the front, Python in the back. An open-source framework for creating data apps. 10- Appsemble Appsemble is an open-source platform for building web applications. It provides a visual interface for designing and developing applications, allowing users to create custom workflows, forms, and dashboards. Some of its key features include: Drag-and-drop interface: Appsemble offers a user-friendly interface where users can easily drag and drop components to build their applications. Customizable templates: Users can choose from a variety of pre-built templates and customize them to suit their specific needs. Data integration: Appsemble allows users to connect to various data sources and integrate data into their applications. Collaboration tools: The platform provides collaboration features, enabling users to work together on the same project and share information. Responsive design: Appsemble applications are designed to be responsive and compatible with different devices and screen sizes. Extensibility: Users can extend the functionality of their applications by adding custom components and plugins. 11- Hydra Hydra is an open-source platform that provides a cloud-based integrated development environment (IDE) for building and deploying web applications. It offers a range of tools and features to streamline the development process and enable collaborative coding. Hydra allows users to create and manage their projects in a centralized location, making it easy to collaborate with team members and track changes. The cloud-based IDE enables users to write code in various programming languages, including HTML, CSS, javascript, and more. With Hydra, users can write code, test applications, and deploy projects in a cloud-based environment. The platform aims to simplify the development workflow by providing a comprehensive set of tools and capabilities. The platform also offers features such as syntax highlighting, code completion, and debugging tools, which help developers write clean and error-free code. Hydra provides a seamless integration with version control systems like Git, allowing users to easily manage their codebase and track changes. Hydra is a app generation product. Hydra aims to reduce the "concept to market" capability of software development to 20%. 12- GrapesJS GrapesJS is an open-source web page builder framework that allows users to create and design web pages visually, without the need for coding. It provides a drag-and-drop interface and a wide range of pre-built components and templates, making it easy for users to build professional-looking web pages. The framework is highly flexible and extensible, allowing developers to create custom components, plugins, and themes to enhance the functionality and appearance of the web pages. It supports responsive design, enabling users to create web pages that adapt to different screen sizes and devices. GrapesJS is designed to simplify the process of building web pages and empower users with limited coding experience to create visually appealing and functional websites. With GrapesJS, users can customize the layout, style, and content of their web pages using a visual editor. They can add and arrange elements, such as text, images, buttons, and more, simply by dragging and dropping them onto the canvas. GrapesJS also offers a code editor option for users who prefer to work with HTML and CSS directly. GitHub - GrapesJS/grapesjs: Free and Open source Web Builder framework. Next generation tool for building templates without coding Free and Open source Web Builder framework. Next generation tool for building templates without coding - GitHub - GrapesJS/grapesjs: Free and Open source Web Builder framework. Next generation tool. 13- formily Formily is an open-source platform developed by Alibaba that provides a set of tools and libraries for building complex and dynamic forms in web applications. It offers a comprehensive solution for managing form data, validation, and user interactions. Formily also offers advanced features, including form validation, dynamic form rendering, conditional logic, and dependency management. It aims to simplify the process of building and managing forms in web applications, providing a robust and efficient solution for developers. With Formily, developers can create forms with a wide range of input fields, such as text fields, checkboxes, radio buttons, dropdowns, and more. The platform provides a flexible and extensible form model, allowing developers to define form schemas and handle form data with ease. GitHub - alibaba/formily: Cross Device & High Performance Normal Form/Dynamic(JSON Schema) Form/Form Builder -- Support React/React Native/Vue 2/Vue 3 Cross Device & High Performance Normal Form/Dynamic(JSON Schema) Form/Form Builder -- Support React/React Native/Vue 2/Vue 3 - GitHub - alibaba/formily: Cross Device & High Perfor… GitHubalibaba 14- Builder.io/Mitosis Builder.io is an open-source library that enables users to build dynamic and interactive web pages using a familiar component-based approach. It allows developers to create reusable UI components using HTML, CSS, and javascript and easily compose them together to build complex web pages. With Builder.io, developers can design and develop web pages visually by dragging and dropping components onto the canvas. The library provides a wide range of pre-built components and templates, making it easy to create professional-looking web pages without writing extensive code. mitosis is a key feature of Builder.io that allows developers to convert Builder.io components into framework-agnostic code. It enables developers to export their Builder.io components as fully functional React, Vue, or Angular components, making it easy to integrate Builder.io into existing projects built with these frameworks. GitHub - BuilderIO/mitosis: Write components once, run everywhere. Compiles to React, Vue, Qwik, Solid, Angular, Svelte, and more. Write components once, run everywhere. Compiles to React, Vue, Qwik, Solid, Angular, Svelte, and more. - GitHub - BuilderIO/mitosis: Write components once, run everywhere. Compiles to React, Vue,… 15- VvvebJs VvvebJs is an open-source drag and drop website builder framework. It provides a visual interface for designing and building web pages using pre-built components and templates. With VvvebJs, users can create responsive and customizable web pages without writing code. The framework offers a range of features, including drag and drop functionality, live preview, and the ability to export the generated HTML and CSS code. It aims to simplify the process of building websites and empower users with limited coding experience to create professional-looking web pages. GitHub - givanz/VvvebJs: Drag and drop website builder javascript library. Drag and drop website builder javascript library. Contribute to givanz/VvvebJs development by creating an account on GitHub. 16- Rowy Rowy is an open-source platform that provides a low-code framework for building business applications powered by Firebase. It aims to simplify the development process and empower users to create powerful and scalable applications without extensive coding knowledge. Rowy leverages the capabilities of Firebase, including Firestore, Authentication, and Storage, to provide a robust backend infrastructure for data management, user authentication, and file storage. It offers a visual interface for designing data models, defining business logic, and configuring user access controls. Rowy is designed to be highly extensible and customizable, enabling users to add custom functionality and integrate with third-party services. It provides a range of UI components and templates to accelerate the development process. GitHub - rowyio/rowy: Low-code backend platform. Manage database on spreadsheet-like UI and build cloud functions workflows in JS/TS, all in your browser. Low-code backend platform. Manage database on spreadsheet-like UI and build cloud functions workflows in JS/TS, all in your browser. - GitHub - rowyio/rowy: Low-code backend platform. Manage databa… 17- Silex Silex, is a free and open source website builder in the cloud. Create websites directly in the browser without writing code. And it is suitable for professional designers to produce great websites without constraints. Silex is also known as the HTML5 editor. GitHub - silexlabs/Silex: Silex live web creation, free/libre no-code website builder, next gen Webflow for the static web Silex live web creation, free/libre no-code website builder, next gen Webflow for the static web - GitHub - silexlabs/Silex: Silex live web creation, free/libre no-code website builder, next gen We… 18- baserow baserow is an open source no-code database tool and Airtable alternative. baserow is free open-source web-based database creation and management tools that requires no prior coding skills or advanced technical skills like other tools. baserow: Create and manage databases with this no-code free app Creating and managing databases is a critical part for any business or any development process. It also requires fair knowledge of installing, configuring and managing database engines and the managing software. While there are some cool management tools like PhpMyAdmin (Adminer) and pgAdmn for Po… MEDevel.comHamza Mousa GitHub - bram2w/baserow: baserow is an open source no-code database tool and Airtable alternative. This is a mirrored repository, the official one is hosted on https://gitlab.com/bramw/baserow. baserow is an open source no-code database tool and Airtable alternative. This is a mirrored repository, the official one is hosted on https://gitlab.com/bramw/baserow. - GitHub - bram2w/baserow: B… GitHubbram2w 19- DoTenX core DoTenX core, is a full stack low-code solution for building scalable and powerful applications, automations, APIs, internal tools and much more. GitHub - dotenx/dotenx: No-code and Low-code all-in-one platform to build landing pages, websites, web applications, APIs, automations. An alternative for Wix, Webflow, Zapier, and more No-code and Low-code all-in-one platform to build landing pages, websites, web applications, APIs, automations. An alternative for Wix, Webflow, Zapier, and more - GitHub - dotenx/dotenx: No-code a… GitHubdotenx 20- Crusher Crusher is a new fast testing framework, it's opinionated and takes a low-code first approach. Create tests by browsing your website and adding assertion when needed. An alternative to slow workflows built and unreliable & slow libraries (w high learning curve), gluing tools, repetitive script. Built from group up as an all-in-tool — with recorder, SDK, Infra + batteries built-in. GitHub - crusher-dev/crusher: Fast low-code testing — create, run tests and get alerts ⏱️ Create test in <60 secs Better open source alternative to selenium, cypress and puppeteer Fast low-code testing — create, run tests and get alerts ⏱️ Create test in <60 secs Better open source alternative to selenium, cypress and puppeteer - GitHub - crusher-dev/crusher: GitHubcrusher-dev 21- Streamsheet The Streamsheet core is a powerful open-source tool that allows you to make your data immediately understandable and create interactive IoT applications visually, all without writing a single line of code. Streamsheet, helps you to easily visualize and analyze your data, connect to various data sources, and build complex workflows. It provides a user-friendly interface for designing and managing your IoT applications, making it accessible to users with limited coding experience. GitHub - eclipse/streamsheets: An open-source tool for processing stream data using a spreadsheet-like interface. An open-source tool for processing stream data using a spreadsheet-like interface. - GitHub - eclipse/streamsheets: An open-source tool for processing stream data using a spreadsheet-like interface. GitHubeclipse 22- Motor Admin Motor Admin is an open-source no-code Admin pantel for bussiness intellegence. With it you can Search, create, update, and delete data entries using a convenient UI. You can also create complex custom actions like sending an automated email to your customers via API integration. Build custom reports with SQL and visualize the results with charts. Combine individual reports into a single dashboard and share it with your team. GitHub - motor-admin/motor-admin: Deploy a no-code admin panel for any application in less than a minute. Search, create, update, and delete data entries, create custom actions, and build reports. Deploy a no-code admin panel for any application in less than a minute. Search, create, update, and delete data entries, create custom actions, and build reports. - GitHub - motor-admin/motor-admin… GitHubmotor-admin 23- Vue Data Board Data Analysis Board This is a self-hosted open-source low-code/ no-code data Analysis Board. It features rich reporting set, visual data presentation, diagrams, charts and report exports. GitHub - dongsuo/vue-data-board: A Data Analysis Board in Vue. A Data Analysis Board in Vue. Contribute to dongsuo/vue-data-board development by creating an account on GitHub. GitHubdongsuo Tags no-code low-code Open-source Self-hosted List Web-based web development web developer web developers programming javascript mobile dev mobile development Web Analytics BI Business Intelligence Related Articles in no-code 22 Open-source Database Visualization Panels and Dashboards for Business Intelligence (BI) 1. Database visualization panels are powerful tools that allow users to visually explore and analyze data stored in databases. These panels provide an intuitive interface to interact with database data and present it in a visually appealing and easy-to-understand manner. Features * Data exploration: Database visualization panels enable users to explore Kuwala: Open-source Self-hosted No-Code Data Workspace for Business Intelligence (BI) Analysts Kuwala is a data workspace that allows BI analysts and engineers to collaborate on building analytics workflows. It brings together data engineering tools like Airbyte, dbt, and Prefect into an intuitive interface. Kuwala emphasizes extendability, reproducibility, and enablement, empowering analysts and engineers to focus on their strengths. Key features include 10 Open-source Free Low-code and No-code Backend Headless Solutions to Boost Your Application Development No-code backend API-first solutions are platforms or tools that allow developers to build applications and manage databases without writing code. These solutions provide a visual interface and pre-built components that enable developers to design and create APIs, manage data, and configure application logic without the need for traditional programming. These 13 Open-source Free frameworks and Platforms for Building Business Applications Enterprise CRM/ ERP Many developers and enterprise organizations often find it necessary to have a strong and reliable foundation to build their applications upon. This includes having robust frameworks and platforms that can support their development needs. By having a solid foundation, developers can ensure the security and integrity of their data, as Outerbridge: Free Low-code Chain-based Web Apps Automation Tool (Open-source) Outerbridge is a unique workflow automation application that offers low code/no code solutions. It is a platform that aims to integrate both on-chain and off-chain applications, making it an innovative solution in the market. The project is licensed under the Apache License Version 2.0, which means it is Untold Engine: easy to use, Open-Source, 3D game engine for iOS/macOS game development. (Free software) The Untold Engine: An easy to use, open source, 3D game engine for iOS/macOS game development License The Untold Engine is licensed under the LGPL v2.1. This means that if you develop a game using the Untold Engine, you do not need to open source your game. However, jMonkey: open-source 2D game engine (Free software) jMonkey is a free, open source game engine, made especially for Java game developers who want to create 3D games using modern technology. The software is programmed entirely in Java, intended for wide accessibility and quick deployment. Features jMonkeyEngine is only one level of abstraction away from OpenGL. The engine GDevelop: Open-source, cross-platform game engine (Free program) GDevelop is a free, open-source, and cross-platform game creation tool that anyone can use to create games without programming skills. Unleash your creativity with GDevelop and create any kind of game: platformers, puzzles, shoot 'em up, strategy, 8-bit games, and many more. GDevelop is a full-featured, no-code, open-source game development Castle Game Engine: Cross-platform (desktop, mobile, console) 3D and 2D game engine (Free program) "Castle Game Engine" is a cross-platform (desktop, mobile, console) 3D and 2D game engine, supporting many asset formats (glTF, X3D, Spine...) and using modern object Pascal * Features * Powerful visual editor to design 3D and 2D games. * A lot of components to design viewport contents (3D and 2D world, using scenes, formsflow.ai: Low-code Workflow RAD Platform for Enterprise formsflow.ai is a low-code platform that helps build powerful business applications, quickly. It integrates open-source tools like form.io for forms, Camunda for workflows, Keycloak for security, and Redash for data analytics into a seamless and unified platform. Best of all, it's free! |
In topic " General Observations About Software History"
|
From a mechanical world to a world of software These are just some musings about software as I encountered it from about 1985 to 2012. I worked for an electric utility. Specifically I worked in the electric meter shop for a small municipal located in southern California. Some of the types of meters I worked with. These meters were located at SCEs facility their display case. SCEs Display link Back in the days when electronics started to come onto the scene well along with that there was this thing called software that worked in conjunction with the electronics. In the beginning it was very simple very ones and zeros and took a lot of effort to get this information under your belt as far as knowledge. For example we had these things called substations that distribute electricity into the neighborhoods. And these substations had mechanical devices relays and sensors and gauges that were analog no software per se. But in my experience around 1985 software started to become a part of the industry and we were off to the races. So for example when we installed a upgrade to one of our substations the electronics was like sold as a package it came with the hardware. so it worked pretty well together. and in those days if you bought a big system it was very expensive so you tended to hang on to it for as long as you could to squeeze every ounce of life out of it. And then later we built another substation and that substation had general electric parts in general electric software and it wasn't compatible with our other system which used a different software. That's when I learned the concept of integration. It was a small cottage industry that developed as a result of systems not being compatible with each other in these guys were really really sharp and they were really tuned in and they were making pretty good money. As time went by the city I worked for develop their own IT department. their strategy was lock everybody down don't let anybody change anything and that was the way it was pretty much. l understand that because a lot of these people The operators of the computers screwed things up all the time introducing more work for the IT department then they needed to have, I get it. On the other hand the IT department wasn't particularly interested in the software that had to do with our substation because it had critical mission value they did something wrong a breaker could go off people could be out of power things could explode I mean they didn't want to get involved with any of that. And of course from 1985 to around 2012 the pace of progress was very fast trying to keep up with all these changes it was daunting. During this time I was able to start dipping my toe in the lake of software development. It was kind of on the down low if my supervisors knew what I was getting into they would have probably pushed it away but they were busy with their jobs and it actually kind of worked out well for us. As long as my other work got done it was tolerated. Some of the software that we put together
During this time there was large software companies that you could buy packages for but they were too much money for us to buy for our small needs. And with most of these company's it was all or nothing. They wanted all the business. You couldn't start small and grow bigger. Later on you could but not in the beginning. So we were able to quickly put together small apps that served our purposes. For example some of the applications was like a database to keep track of our meters the current transformers the power poles in the field, distribution transformers in the field capacitor Banks there were many things. Some simple program to interface with the electric meters themselves to process the data from them now that they were electronic. actually they became little computers. And the things that we couldn't do ourselves we hired people to come in and specifically develop it for us programmers It was a very exciting time for me. Of course we went through the usual process. First we kept this information on spreadsheets which quickly we realize wasn't going to be enough. But then in our case we use a database called paradox. And that seemed to work very well for a while. Then about 1995 I ran across Delphi. we use Delphi from version 1 to version 7. then the company seem to just fall apart for whatever reasons I don't know. One of the good things about Delphi is that there seem to be a large user base there were a lot of people had forums that were all about Delphi a lot of people writing books and a lot of people making components for the Delphi program I was very happy with Delphi for a while. Software can be very pleasant I mean enjoyable if you don't have a deadlines to meet in people screaming at you to work faster you know, I didn't have that. It was a very nice experience. During this time the internet was maturing. I was looking to develop applications as the saying goes right once deploy anywhere. I was not wanting to develop for a specific operating system but so that you could use it on the internet and have generic tools. Of course during that time there was a lot of growing pain as far as using the internet like we can use it today in 2023. There is a thing called a citizen developer. That describes what I was pretty much. I knew enough to write software to get in trouble. Because it wasn't my main job I couldn't get really deep into it like trying to learn c programming and Pascal and basic and Ruby on rails and PHP and Java it goes on and on. I did try to learn these programs but it just was more than I could absorb even today I'm saturated with all this stuff. That's why programming with no code or low code tools was appealing for me. Drag and drop put little graphics on a pallet on the screen push a button deployed on the web and you have an app. But if you wanted it to do anything substantial you had to know a little bit more about what's going on under the hood. Kind of like a software integrator. Then I ran across a platform called CrossUI. it's very much like Delphi except it works with Java. it's drag and drop put things on the screen easy to deploy but then again you need to know what's going on under the hood or your apps are just fluffy do nothing apps. CrossUI, I like it but as far as the examples they give there's a few of them that are complete but most of them are just like samples that aren't finished. And these guys they know what they're doing but when I look at some of the things I even made using this CrossUI I have to scratch my head and say how the heck is this thing working I mean it's just a lot of parts to it and if you don't use it a lot you forget as with anything I suppose. Some of the features that I like about CrossUI as you can use it online and create applications fully blown means is much knowledge as you have if you can put it to work you can do it right there online. Of course I don't always have internet service so they do allow you to download a package for Windows or Linux and you can develop them locally on your own PC without the internet I like that. Another good thing is that if you want to do anything substantial you need to learn a little bit more about the nuts and bolts which forces you to dig deeper and learn more when you use their frame work That's a good thing. Although sometimes it drives me a little crazy. One thing that Jack from CrossUI needs is a bigger user base. By having more YouTube videos that explain how to use his frame work in detail would be very helpful. Like this video that I made a few years ago. That frame work was called UIbuilder. This video was just a simple introduction but I think these type of videos would be very helpful. You can view the video from this link below UI Builder the predecessor of CrossUI This week I looked at about 23 different programs that they were low code or no code. But many of them you can only use on the internet many of them are very scaled back as far as what you can do with them initially. And I went over the list of what 23 of them and I have to preview it more but it's going to take some time I just get saturated easy you know how it is my eyes start the gloss over and fall asleep in front of the computer screen. Anyway that's it in a nutshell for now. Clark |
In topic "message to Adam"
|
Hi Adam my name is Clark I'm a retired electrical test technician that got involved with some software programming in my time I'm retired now.
I guess I'm what you would refer to as a citizen developer. Only part of my job involves software which management wasn't really that fond of but they recognize that it fill the need and so they allowed me to proceed. I love programming why I don't know but it's something that I seem to enjoy even though I'm retired and I don't have a need for it now. But I have a 20 year old son and I would like to probably share my experience with him and hopefully get him involved in software development. Although it really never got good at it myself. For a while I program with Delphi and I enjoyed it very much until version 7 then it went down the dumper I became disillusioned with developing for a particular platform like Windows or Linux and it seemed like the internet was the place to go if one was going to do that. Although I came to realize that developing applications for the internet is not like working with Delphi there's a lot of differences. I came across some software developed by a person named Jack Lee and it's called cross UI. https://www.crossui.com/RAD/ It seems to be a little like Delphi but of course it's you need like PHP to get the work done on the server like making things persistent reading and writing files online it seems that you need PHP to facilitate that. Anyway enough of that. I just wanted to thank you very much for your your work you did a lot of hard work I remember your videos I followed you a couple of years ago in your teaching skills are awesome and I hope that all that work you put into software development paid off I hope you made some money out of it or became better off somehow in this dog eat dog world. Are you still doing PHP programming and if I had a small project could I hire you to assist me in doing it? If the price was right and the results were good I have many things that I would like to get assistance with. But one step at a time. Anyway I lost your information a couple years ago I you seem to go off the map. And I was looking over some old stuff and I ran across it again. Anyway some of the work that I would want to do has to do with using PHP to work in conjunction with javascript through this program called cross UI. Anyway Adam I hope you're having a beautiful now and I hope your life is prosperous. Clark |
In topic "Cathy's Place"
|
---|
Cathy's project page http://foodtrucks.atwebpages.com/anton/Food_Items_list.php |
In topic "El Padrino Food Trailer menu"
|
An idea updated 1/2/25 Just a though, Advertising cost money. The benefits of advertising means (hopefully) more business to your food truck. If you were to try a one day roll back of your prices these prices for example what kind of response do you think you would get? Something like this Update 2/24/25 I would be willing to write you folks a check for $100.00 to cover some of the loses. one time low budget sponsor if you try this idea. How much do you think it would cost you (The cost of Advertising) ? Do you think it might be worth a try? You could post it for example on the "NextDoor" website. |
hi Nancy I was playing with some new software. Here is a sample. foodtrucks.atwebpages.com/sandbox1/crg_photos1_list.php? Its very simple. It shows the price, allows you to say a few words about your food item and shows a picture that came be zoomed in on. Its faster then the other stuff I have done so far. Should work good on a phone or a tablet. Oh yes on a PC too. Its has the ability edit and add records from your PC at home via the web. It has admin log in allowing you to change the data. you can log in your password and user ID is nancy, nancy. As always this is my hobby, free to you folks. If you choose to use I can help set you up. Clark & Spencer. 979.922.5182. |
Hello Nancy and Freddy. You know driving by your place every so often one day I notice you move the trailer to the back which made me not want to drive in so easily it's so easy just to pull up to the front. Well you informed me that you have a little place next to the front gate that you now use as your main place of operation which is really cool. I have to stop in some time and check it out. Perhaps you've already mentioned this on the next door website but and I just might have missed it but if you haven't maybe it would be a good idea to let all your customers know that you are now doing business out of this new spot and they should come in and check it out justin saying. Perhaps if you haven't mentioned in a next door and you intend to maybe you should take a picture of the outside in a couple pictures on what it looks like on the inside that would be useful I think. May be successful and you guys have a beautiful day |
In topic "Alpha's Tax Servise"
|
Here is a simple I made for my tax person.
elmoross.atwebpages.com/alpha/ Click on the picture. |
In topic "mojo man"
|
link to test site spencer.atwebpages.com/mojo.man/ <- old test ideas only, never went anywhere. Hi Mojo man I'm Clark. My Son is 20 years old. He doesn't drive yet and he wants a job really bad but no luck so far. So I made a deal with him. I'll teach him computer programing (in this case making simple web pages) And I'll pay him 7 dollars an hour. Yes as a young one he needs to be motivated by money. To teach him this takes a bit of work but its not rocket science. So I have been looking around in my neighbor hood looking for people to work with who might benefit from such a site. Its more of an electronic business card nothing fancy at this time. I noticed you are using Yelp. That a good resource. Here are a few projects I'm working on so far. Azteca Grill spencer.atwebpages.com/azteca/ ![]() El Padrino Food Trailer This is the debug on CrossUI's site https://tinyurl.com/crossui ![]() Crystal's Place tiny.cc/tuk1 ![]() So if your interested the only thing I would need your help with is matching the name of the food item with the label on the menu and current prices. And perhaps some feed back on the look and feel of the menu. I would even be willing to show you how its done and you could do it your self If you were inclined. I would be willing to maintain the site for at least a year, perhaps longer, as long as I can keep my son motivated The web-hosting site is free. And all the software is free. I expect no money from you. If your interested let me know. Also I pass by your place every other week when we go shopping at HEB. |
Updated: 1/1/25 I'm still working with different software tools. Since I reached out to you in June of 2024 I have been working with "PHP" a type a software language. This is a sample SQLite database tool that I'm working on currently. This is a simple single table SQLite database. It's hosted on a free web hosting site. Some positive aspects of this tool. Free software and web hosting. The record has only 5 fields. You can edit and update the data from you tablet of PC, or even your phone but that's not recommended. if you click on an image of a food item the image is expanded. When updating the image (food item) select the image you want, then you need to push the upload button. finely you need to push the save button to save all the changes. When adding a record the only required field is the "Sort Order" field. This coulomb allows you decide the order of the way the records are displayed. Another benefit is that you can add your comments about your food item along with the photo. There should be a landing page. I'm still working on that. To log in to the SQLite database tool the user id is mojo, password is man Again no charge for this. If your interested in using this software tools let me know. Clark & Spencer Talk or text at 209.860.1927 |
In topic "Crystel's Place"
|
Todo lists ![]() 1) Install the forum program. 2) Edit WE program so the controls can be toggled 3) Make WE to load the json file after program loads 4) Remove all files and folders from http://vb4.xp3.biz/tuk/ 5) Change URI path for food photos to http://tuktuk.6te.net/tuk/img |
Hi Here is a web page that might make it easier to upload your food item photos. No login required. Its here hotchick.atwebpages.com/sandbox/crg_photos1_list.php?a=return There is one photo loaded as an example. 1) In the upper left area of the screen there is a button called "Add new" select that. 2) A place to add a new record will appear. There will be a input field That says "Comment" enter the name of the food item there. 3) Then Select the button that says "Add files". A box will open allowing you to select a photo from your computer. When you selected the photo you want a picture of it will be displayed. A button will appear that says "Upload", click it. A indicator will appear showing the progress of the upload, make sure the file it uploaded all the way. At the lower corner will be a button called save. Click it. Give a few moments when the file has been successfully saved a message will appear at the top of the window indicating that the record was saved. When you are done adding records the will be a button that says "Back to list" when you are finished. Then at your connivance On your webpage tiny.cc/tuk1 In the blue colored text that says "Crystal's Place" click on the text. That will take you to your forum project page. Go to the bottom of the page and there you will find an area to post a comment. Then for each menu item you could ad a few words about each food item. You know some Bla Bla words that will inspire others to try it. Also if you add a list of the location of the places your food truck I will add the list so when the button on your page is clicked "Locations we will be at" will display them. Any help you need in doing this just ask Clark |
In topic "Bible Study Group Forum"
|
For the those who make such decisions for the bible study group. This is just a page on my forum. I would be happy to set you up with your own free hosted website and forum. The forum would be a clone of this forum because its free and I know how it works. This forum is old (year 2000) I like it. Although you can find many newer more modern forums. But then the one running it would need to learn works and set it up. That may be more effort than it worth to the one setting it up. You could show meeting times, general info... Maintenance of a forum can be a bit of a challenge if you open it up to the public. I'm not interested in running a public forum but I wouldn't mind helping out for a bit if that what you wanted. Or the forum could be as simple as showing times or dates of the meetings or some announcements. In that case it would be no problem at all. Just running the idea up the flagpole. vb4.xp3.biz/bsg/ Clark |
In topic "Southside burgers and more"
|
This is your project page
You can check on progress or add some comments. ![]() Hi Leticia I made this PDF menu with free software “Openoffice”. You could make a menu and export it as a PDF file. I even put links to photos (random just for example) for the food items. When viewing links use back arrow to get bask to menu.pdf. This is very easy! On my android browser there is an option to download the PDF menu. Basically this is how it works. There are two parts. A landing page showing your logo and a few buttons. The second part is the PDF menu. You can just go to the menu link if you want and not use the landing page at all. Ok here is a wild thought. Most people who sell food run out of menu space and they add new items that don't fit on the menu to a "white board". I also noticed that on the next door website you show many dishes that are probably not on your menu (just a guess). If you like we could upgrade your menu to show all your food items with a link to a picture and a short description of each food item. Think about it. I'll keep working on this as I have time (Spencer will). If you want to upgrade your menu to show pictures and include a few words about your food items let me know we (Spencer) can do that. |
Hi Leticia Clark here. I made a proposal to you last year to make a free simple web page for you. link to web page Also we made an attempt to redesign your menu page. Not that it needed anything we Spencer my son and I did it just for the experience. BTH it you in the tacos section if you click on the selection "Tacos" "Beef Fajita" it links to a page that permits you to show a picture with a short description. This menu is in a PDF file format. you can see the link here Here is another menu I think I found this one on your Facebook page. your current menu When you post on the nextdoor page perhaps you should include a link to one of these menu pages. I'm trying something new. This is a project that uses an online data base. Perhaps you would like to try something like this. link to new project Also out of the 10 or so people I reached to you have some of the best pictures of your dishes. Except for the ones you put text over, please don't hate for that observation. I also have some small recommendations about your Facebook page if you what to hear them. Overall I think you do a very good job. Have a wonderful day Clark |
In topic "El Pueblito project page"
|
Updated Jan 18/25 Hi Veronica This is an offer I am making to a few neighborhood to host a simple free webpage for your business, I have been looking on the nextdoor site that's how I found you. The WIN WIN situation for US is this: Spencer (my son) can earn some money (I pay him) and preform some useful service in helping one of our neighbors (that's you). For a reference regarding Spencer & I you can call Cathy (I actually live around the corner form her). Her number is 210-849-9627. This is the web page I made for her Cathy's webpage She sales food on the weekend. Cathy is expanding her place, building adding on. Next time your in the neighborhood on the weekend you should stop by and check it out. This assistance is free no strings attached. We (Spencer & I) made this simple menu page for you back in Aug 2024. Shortly there after it stopped working, I was not aware that it stopped working. Well it should be working now. If you look at the existing menu by clicking the menu button on the landing page you will notice Mini Tacos and Quesadillas Grande. These are links to a page that describes you food item and shows a picture of your food item. To change or edit these takes a little work. Or you could try something like this "easy edit". Using a page like this would make it easy to edit and change the pictures and food descriptions yourself from your PC tablet or phone. Can be done from a phone but the sceen on a phone is kinda small, but it can be done. If you would like some assistance Spencer can help. He is the reason we offer these simple little web pages for free, I'm teaching him. You can text it to this number 979-922-5182 or 209-860-1927. Clark Getty ![]() Veronica's nextdoor liink below https://nextdoor.com/profile/01GgLTFB9Q3XS8C5t/?is=detail_author |
In topic "Azteca Grill"
|
Project Page for Azteca Grill menu format I like https://azteca-mexicanrestaurant.com/#MENU https://aztecagrill.top/gallery |
In topic "Deep Tread Tire Service"
|
Project Page for Deep Treadz tiny.cc/mikea mobile1.onlinewebshop.net/deep/ ![]() |
In topic "clodia's Place"
|
Spanish Translator https://www.google.com/search?client=firefox-b-1-d&q=enlish+2+spanish+translation |
Spanish Aquí hay una página web que podría facilitar la carga de fotografías de sus alimentos. No es necesario iniciar sesión. Está aquí foodtrucks.atwebpages.com/anton/Food_Items_list.php? Hay una foto cargada como ejemplo. 1) En el área superior izquierda de la pantalla hay un botón llamado "Agregar nuevo", selecciónelo. 2) Aparecerá un lugar para agregar un nuevo registro. Habrá un campo de entrada que dice "Comentario", ingrese el nombre del alimento allí. 3) Luego seleccione el botón que dice "Agregar archivos". Se abrirá un cuadro que le permitirá seleccionar una foto de su computadora. Cuando seleccione la foto que desea, se mostrará una imagen de la misma. Aparecerá un botón que dice "Subir", haz clic en él. Aparecerá un indicador que muestra el progreso de la carga, asegúrese de que el archivo se haya cargado por completo. En la esquina inferior habrá un botón llamado guardar. Haz clic en él. Pasados unos momentos cuando el archivo se haya guardado exitosamente aparecerá un mensaje en la parte superior de la ventana indicando que el registro fue guardado. Cuando haya terminado de agregar registros, aparecerá un botón que dice "Volver a la lista" cuando haya terminado. Luego, para cada elemento del menú, podría agregar algunas palabras sobre cada alimento. Conoces algunas palabras Bla Bla que inspirarán a otros a probarlo. Si esto funciona para usted, podríamos intentarlo de esta manera. Cualquier ayuda que necesites para hacer esto solo pregunta clark ![]() Here is a web page that might make it easier to upload your food item photos. No login required. Its here hotchick.atwebpages.com/sandbox/crg_photos1_list.php?a=return There is one photo loaded as an example. 1) In the upper left area of the screen there is a button called "Add new" select that. 2) A place to add a new record will appear. There will be a input field That says "Comment" enter the name of the food item there. 3) Then Select the button that says "Add files". A box will open allowing you to select a photo from your computer. When you selected the photo you want a picture of it will be displayed. A button will appear that says "Upload", click it. A indicator will appear showing the progress of the upload, make sure the file it uploaded all the way. At the lower corner will be a button called save. Click it. Give a few moments when the file has been successfully saved a message will appear at the top of the window indicating that the record was saved. When you are done adding records the will be a button that says "Back to list" when you are finished. Then for each menu item you could ad a few words about each food item. You know some Bla Bla words that will inspire others to try it. If this works for you we could try it this way. Any help you need in doing this just ask Clark |
In topic "ver 6.2 Issues"
|
---|
I made a new project for Mildred, using a SQLite table. Made the table with Phprunner. The field rec_id was an "int". Set it to auto increment. It diden't stick. Had to edit the table (named apointments.sqlite3) in a separate SQLite editor then it stucked, worked. |
In topic "Phprunner 6.2"
|
I Phprunner 6.2 on a virtual machine using virtual box. To deploy I need to go to the output directory. Then I need to edit the file name dbcommon.php. Open the file and past in the path string for the SQLite database. For example a code snippet of the of the dbcommon.php file. /// include php specific code include("phpfunctions.php"); $useOldMysqlLib = (bool)1; $dbname="C:xampphtdocs_food.trk.62crg_bb2"; // $dbname="crg_bb2"; <- when deploying on line use this $cCharset = "Windows-1252"; $cCodepage = 1252; $cMySQLNames = ""; $gLoadSearchControls = 30; $projectPath = ''; header("Content-Type: text/html; charset=".$cCharset); include("locale.php"); include("events.php"); include("commonfunctions.php"); include("dbconnection.php"); |
In topic "Deepseek 3.x"
|
---|
Deepseek is a company located in China. I saw a video where it was pointed out that anything created using Deepseek belongs to them. In the terms of use it states: If you make something successful Deepseek owns it bottom line. |
In topic "Videos On AI"
|
This video is about running AI from a local PC |
AI Studio looks good temp links https://www.youtube.com/@TomBilyeu Emad Mostaque |
![]() ![]() Eli the computer guy webpage |
In topic "AI related tmp links"
|
I asked the question what was the best llm for riding software code and smallest For developing software with a small yet powerful language model, Phi-3-mini stands out as an excellent choice. This model, with just 3.8 billion parameters, offers remarkable performance across coding, language, and math capabilities10. Top Small LLMs for Software Development: Phi-3-mini: Delivers exceptional results despite its small size, outperforming models both in its class and the next size up10 Llama 3 8B: Open-source model that runs efficiently on systems with 16GB VRAM and 32GB RAM, providing excellent coding capabilities2 Phind-CodeLlama: Specifically fine-tuned for programming, leading on the Big Code Models Leaderboard (though larger at 34B parameters)4 For developers with limited hardware resources, the Phi-3-mini offers the best balance of performance and efficiency. Its development focused on high-quality training data, including children's books, allows it to achieve impressive results despite its compact size10. |
In topic "My database project DeepSeek"
|
_deep/
├── app/ │ ├── public/ # Web-accessible files │ │ ├── components/ # Your toast/grid components │ │ ├── index.html # Your HTML form │ │ ├── submit.php # PHP backend (moved here) │ │ └── js/ │ │ └── main.js # Frontend logic │ │ │ └── private/ # Protected server-side files │ └── database/ │ └── data.db # SQLite database └── .htaccess # Security rules (in the root directory) |
The Components directory and files.
_deep/ ├── app/ │ ├── public/ # Web-accessible files │ │ ├── components/ # Your toast/grid components ![]() // Grid class Grid extends HTMLElement { constructor() { super(); this.attachShadow({ mode: 'open' }); } connectedCallback() { this.render(); } render() { this.shadowRoot.innerHTML = ` <style> table { width: 100%; border-collapse: collapse; } th, td { border: 1px solid #ddd; padding: 8px; text-align: left; } th { background-color: #f2f2f2; } </style> <table> <thead> <tr> ${this.columns.map(col => `<th>${col}</th>`).join('')} </tr> </thead> <tbody> ${this.data.map(row => ` <tr> ${row.map(cell => `<td>${cell}</td>`).join('')} </tr> `).join('')} </tbody> </table> `; } set columns(value) { this._columns = value; this.render(); } get columns() { return this._columns || []; } set data(value) { this._data = value; this.render(); } get data() { return this._data || []; } } customElements.define('my-grid', Grid); ![]() // Toast class ToastMessage extends HTMLElement { constructor() { super(); // Create Shadow DOM const shadow = this.attachShadow({ mode: 'open' }); // Define template with scoped CSS const template = document.createElement('template'); template.innerHTML = ` <style> /* styles are SCOPED to this component! */ :host { position: fixed; bottom: 20px; right: 20px; padding: 12px 24px; border-radius: 4px; font-family: Arial, sans-serif; opacity: 0; transition: opacity 0.3s ease-in-out; z-index: 1000; color: white; } :host([type="success"]) { background-color: #4CAF50; } :host([type="error"]) { background-color: #f44336; } :host([type="info"]) { background-color: #2196F3; } :host([type="warning"]) { background-color: #ff9800; } </style> <slot></slot> <!-- Renders inner HTML --> `; // Attach template to Shadow DOM shadow.appendChild(template.content.cloneNode(true)); } /** * Public method to show the toast. * @param {string} message - The message to display. * @param {string} type - The type of toast (success, error, info, warning). * @param {number} duration - How long the toast should stay visible (in milliseconds). */ show(message, type = 'success', duration = 3000) { // Set attributes this.setAttribute('type', type); this.textContent = message; // Fade in this.style.opacity = '1'; // Auto-remove after duration setTimeout(() => { this.style.opacity = '0'; setTimeout(() => this.remove(), 300); // Wait for fade-out }, duration); } } // Register the custom element customElements.define('toast-message', ToastMessage); |
├── public/ # Web-accessible files │ │ ├── components/ # Your toast/grid components │ │ ├── index.html # Your HTML form │ │ ├── submit.php # PHP backend (moved here) ![]() // index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Enhanced Complete Demo</title> <style> body { font-family: Arial, sans-serif; padding: 20px; } .outer-frame { border: 3px solid #444; border-radius: 15px; padding: 20px; max-width: 800px; margin: 0 auto; background-color: #f9f9f9; position: relative; /* For positioning the record count */ } .inner-frame { border: 1px solid #ccc; border-radius: 10px; padding: 20px; margin-top: 20px; background-color: white; } .input-group { margin-bottom: 15px; } label { display: inline-block; width: 100px; } input, textarea { width: 250px; padding: 5px; } textarea { vertical-align: top; } button { padding: 10px; margin-right: 10px; margin-top: 10px; } #dataGrid { margin-top: 20px; width: 100%; border-collapse: collapse; } #dataGrid th, #dataGrid td { padding: 10px; border: 1px solid #ddd; text-align: left; } #dataGrid th { background-color: #f5f5f5; } #recordCount { position: absolute; top: 2px; right: 30px; /* Moved to upper-right corner */ font-size: 16px; font-weight: bold; } </style> </head> <body> <div class="outer-frame"> <!-- Record Count --> <p id="recordCount">Total Records: 0</p> <h1>Enhanced Complete Demo</h1> <!-- Form Section --> <form id="mainForm" novalidate> <div class="inner-frame"> <div class="input-group"> <label for="username">Username:</label> <input type="text" id="username" name="username" required> </div> <div class="input-group"> <label for="email">Email:</label> <input type="email" id="email" name="email" required> </div> <div class="input-group"> <label for="notes">Notes:</label> <textarea id="notes" name="notes" rows="4"></textarea> </div> <!-- Buttons --> <button type="submit" id="submitBtn">Submit</button> <button type="button" id="refreshBtn">Refresh</button> <button type="button" id="clearCacheBtn">Clear Cache</button> <button type="button" id="testToastBtn">Test Toast</button> </div> </form> <!-- Grid Section --> <div class="inner-frame"> <table id="dataGrid"> <thead> <tr> <th>ID</th> <th>Username</th> <th>Email</th> <th>Notes</th> <th>Created At</th> </tr> </thead> <tbody> <!-- Rows will be populated dynamically --> </tbody> </table> </div> </div> <!-- Component scripts --> <script type="module" src="components/toast/toast.js"></script> <script type="module" src="js/main.js"></script> </body> </html> ![]() // submit.php <?php header('Content-Type: application/json'); try { // Sanitize inputs $username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING); $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL); $notes = filter_input(INPUT_POST, 'notes', FILTER_SANITIZE_STRING); // Validate if (empty($username) || empty($email)) { throw new Exception('Username and email are required'); } if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { throw new Exception('Invalid email format'); } // Connect to SQLite database $dbPath = __DIR__ . '/../private/database/data.db'; $db = new PDO("sqlite:$dbPath"); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Create table if it doesn't exist $db->exec(" CREATE TABLE IF NOT EXISTS submissions ( rec_id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL, email TEXT NOT NULL, notes TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) "); // Insert data using prepared statements $stmt = $db->prepare("INSERT INTO submissions (username, email, notes) VALUES (:username, :email, :notes)"); $stmt->execute(array( ':username' => $username, ':email' => $email, ':notes' => $notes )); // Success response echo json_encode(array( 'success' => true, 'message' => 'Record saved successfully!' )); } catch (Exception $e) { // Error response (workaround for http_response_code in PHP 5.3) header('HTTP/1.1 500 Internal Server Error'); echo json_encode(array( 'success' => false, 'error' => $e->getMessage() )); } |
In topic "My database project Perplexity"
|
_perp ├── components ├── database ├── js ├── php ├── index.php <--- also this file is in php dir └──index.html ![]() // index.php <?php // Any PHP code or includes can go here // For example, you might want to include a database connection or session start // include 'database_connection.php'; // session_start(); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Enhanced Complete Demo</title> <style> body { font-family: Arial, sans-serif; padding: 20px; } .outer-frame { border: 3px solid #444; border-radius: 15px; padding: 20px; max-width: 800px; margin: 0 auto; background-color: #f9f9f9; } .inner-frame { border: 1px solid #ccc; border-radius: 10px; padding: 20px; margin-top: 20px; background-color: white; } .input-group { margin-bottom: 15px; } label { display: inline-block; width: 100px; } input, textarea { width: 250px; padding: 5px; } textarea { vertical-align: top; } button { padding: 10px; margin-right: 10px; margin-top: 10px; } #dataGrid { margin-top: 20px; } </style> </head> <body> <div class="outer-frame"> <h1>Enhanced Complete Demo</h1> <div class="inner-frame"> <div class="input-group"> <label for="nameInput">Name:</label> <input type="text" id="nameInput" name="name" required> </div> <div class="input-group"> <label for="emailInput">Email:</label> <input type="email" id="emailInput" name="email" required> </div> <div class="input-group"> <label for="notesInput">Notes:</label> <textarea id="notesInput" name="notes" rows="4"></textarea> </div> <button id="submitBtn">Submit</button> <button id="refreshBtn">Refresh</button> <button id="clearCacheBtn">Clear Cache</button> </div> <div class="inner-frame"> <my-grid id="dataGrid"></my-grid> </div> </div> <script type="module" src="components/toast/toast.js"></script> <script type="module" src="components/grid/grid.js"></script> <script type="module" src="js/main.js"></script> </body> </html> ![]() // index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Enhanced Complete Demo</title> <style> body { font-family: Arial, sans-serif; padding: 20px; } .outer-frame { border: 3px solid #444; border-radius: 15px; padding: 20px; max-width: 800px; margin: 0 auto; background-color: #f9f9f9; } .inner-frame { border: 1px solid #ccc; border-radius: 10px; padding: 20px; margin-top: 20px; background-color: white; } .input-group { margin-bottom: 15px; } label { display: inline-block; width: 100px; } input, textarea { width: 250px; padding: 5px; } textarea { vertical-align: top; } button { padding: 10px; margin-right: 10px; margin-top: 10px; } #dataGrid { margin-top: 20px; } </style> </head> <body> <div class="outer-frame"> <h1>Enhanced Complete Demo</h1> <div class="inner-frame"> <div class="input-group"> <label for="nameInput">Name:</label> <input type="text" id="nameInput" name="name" required> </div> <div class="input-group"> <label for="emailInput">Email:</label> <input type="email" id="emailInput" name="email" required> </div> <div class="input-group"> <label for="notesInput">Notes:</label> <textarea id="notesInput" name="notes" rows="4"></textarea> </div> <button id="submitBtn">Submit</button> <button id="refreshBtn">Refresh</button> <button id="clearCacheBtn">Clear Cache</button> </div> <div class="inner-frame"> <my-grid id="dataGrid"></my-grid> </div> </div> <script type="module" src="components/toast/toast.js"></script> <script type="module" src="components/grid/grid.js"></script> <script type="module" src="js/main.js"></script> </body> </html> |
_perp ├── components ![]() // grid class Grid extends HTMLElement { constructor() { super(); this.attachShadow({ mode: 'open' }); } connectedCallback() { this.render(); } render() { this.shadowRoot.innerHTML = ` <style> table { width: 100%; border-collapse: collapse; } th, td { border: 1px solid #ddd; padding: 8px; text-align: left; } th { background-color: #f2f2f2; } </style> <table> <thead> <tr> ${this.columns.map(col => `<th>${col}</th>`).join('')} </tr> </thead> <tbody> ${this.data.map(row => ` <tr> ${row.map(cell => `<td>${cell}</td>`).join('')} </tr> `).join('')} </tbody> </table> `; } set columns(value) { this._columns = value; this.render(); } get columns() { return this._columns || []; } set data(value) { this._data = value; this.render(); } get data() { return this._data || []; } } customElements.define('my-grid', Grid) ![]() // toast export class Toast { constructor(message, duration = 5000, type = 'info') { this.message = message; this.duration = duration; this.type = type; this.element = null; } show() { this.element = document.createElement('div'); this.element.className = `toast toast-${this.type}`; this.element.textContent = this.message; document.body.appendChild(this.element); setTimeout(() => this.element.classList.add('show'), 10); setTimeout(() => this.hide(), this.duration); } hide() { this.element.classList.remove('show'); setTimeout(() => this.element.remove(), 300); } } |
├── database ![]() //table structure DB name is aiandme.db BEGIN TRANSACTION; CREATE TABLE IF NOT EXISTS "users" ( "rec_id" INTEGER, "username" TEXT NOT NULL, "email" TEXT UNIQUE, "created_at" DATETIME DEFAULT CURRENT_TIMESTAMP, "notes" TEXT, PRIMARY KEY("rec_id" AUTOINCREMENT) ); COMMIT; ![]() // sqlconnector.js const initSqlJs = require('sql.js'); async function initializeDatabase() { try { // Load SQL.js library const SQL = await initSqlJs(); // Create new database const db = new SQL.Database(); // Example: Create a simple table db.run(` CREATE TABLE users ( id INTEGER PRIMARY KEY, username TEXT, email TEXT ) `); return db; } catch (error) { console.error('Database initialization error:', error); } } module.exports = { initializeDatabase }; ![]() // test_connection.php <?php require_once 'db_connection.php'; echo " If you see this message without any errors, the database connection is working."; ?> ![]() // testdatabase.js const { initializeDatabase } = require('./sqlconnector'); async function testDatabaseConnection() { try { const db = await initializeDatabase(); // console.log("✓ Database successfully initialized"); // Optional: Test table creation const result = db.exec("PRAGMA table_info(users)"); console.log("Table structure:", result); } catch (error) { console.error("x Database initialization failed:", error); } } testDatabaseConnection(); |
├── js ![]() // index.js import { Toast } from '../components/toast/toast.js'; << .. ? function loadRecords() { fetch('php/fetch_records.php') .then(response => response.json()) .then(records => { const tableBody = document.querySelector('#dataGrid tbody'); tableBody.innerHTML = ''; // Clear existing rows records.forEach(record => { const row = ` <tr> <td>${record.first_name}</td> <td>${record.last_name}</td> <td>${record.email}</td> <td>${record.notes}</td> </tr> `; tableBody.innerHTML += row; }); }) .catch(error => { console.error('Error:', error); new Toast('Error loading records', 5000, 'error').show(); }); } function validateForm() { var fields = ['firstName', 'lastName', 'email']; for (var i = 0; i < fields.length; i++) { if (document.getElementById(fields[i]).value.trim() === '') { return false; } } return true; } document.addEventListener('DOMContentLoaded', () => { loadRecords(); document.getElementById('submitBtn').addEventListener('click', function(event) { event.preventDefault(); if (!validateForm()) { new Toast('Please fill out all fields', 5000, 'error').show(); } else { // Handle form submission here new Toast('Form submitted successfully!', 5000, 'success').show(); // You might want to add code here to submit the form data } }); }); ![]() // File: main.js document.addEventListener('DOMContentLoaded', function() { console.log("DOM fully loaded"); const grid = document.getElementById('dataGrid'); if (grid) { console.log("Grid found"); grid.columns = ['Name', 'Email', 'Notes']; grid.data = [ ['John Doe', 'john@example.com', 'Initial entry'], ['Jane Smith', 'jane@example.com', 'Second entry'], ['Bob Johnson', 'bob@example.com', 'Third entry'] ]; } else { console.error("Grid not found"); } const submitBtn = document.getElementById('submitBtn'); console.log("Submit button:", submitBtn); if (submitBtn) { submitBtn.addEventListener('click', function(event) { console.log('Submit button clicked'); event.preventDefault(); const name = document.getElementById('nameInput').value.trim(); const email = document.getElementById('emailInput').value.trim(); const notes = document.getElementById('notesInput').value.trim(); console.log("Input values:", { name, email, notes }); if (!name || !email) { console.log("Validation failed"); // Error handling (toast to be implemented later) } else { console.log("Validation passed"); // Send data to the server fetch('php/save_data.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: `name=${encodeURIComponent(name)}&email=${encodeURIComponent(email)}¬es=${encodeURIComponent(notes)}` }) .then(response => response.text()) .then(text => { console.log('Raw server response:', text); return JSON.parse(text); }) .then(data => { if (data.status === 'success') { console.log('Data saved successfully'); // Update grid grid.data = [...grid.data, [name, email, notes]]; // Clear input fields document.getElementById('nameInput').value = ''; document.getElementById('emailInput').value = ''; document.getElementById('notesInput').value = ''; } else { console.error('Error saving data:', data.message); } }) .catch(error => { console.error('Error:', error); }); } }); } else { console.error("Submit button not found"); } const refreshBtn = document.getElementById('refreshBtn'); if (refreshBtn) { refreshBtn.addEventListener('click', function() { location.reload(); }); } const clearCacheBtn = document.getElementById('clearCacheBtn'); if (clearCacheBtn) { clearCacheBtn.addEventListener('click', function() { if (window.caches) { caches.keys().then(function(names) { for (let name of names) caches.delete(name); }); } location.reload(true); }); } }); |
├── php ![]() // db_connection.php <?php try { // Use a full path to your SQLite database file $dbPath = $_SERVER['DOCUMENT_ROOT'] . "/ai/database/aiandme.db"; $pdo = new PDO("sqlite:" . $dbPath); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Uncomment the line below for debugging // echo 'Connected to the SQLite database successfully!'; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } ?> ![]() // fetch_records.php <?php try { // Database connection (using PDO for SQLite) $pdo = new PDO("sqlite:" . "C:\xampp\htdocs\_my_project\database\aiandme.db"); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // SQL query to select records $query = "SELECT first_name, last_name, email, notes FROM users"; // Prepare and execute the statement $stmt = $pdo->prepare($query); $stmt->execute(); // Fetch all records as associative array $records = $stmt->fetchAll(PDO::FETCH_ASSOC); // Return records as JSON for javascript processing echo json_encode($records); } catch(PDOException $e) { // Error handling echo json_encode(['error' => $e->getMessage()]); } ?> ![]() // save_data.php <?php // File: save_data.php // Database connection details $dbPath = __DIR__ . '/../database/aiandme.db'; // Adjust the path as needed // Set the content type to JSON header('Content-Type: application/json'); error_log("Attempting to save data"); try { $pdo = new PDO("sqlite:$dbPath"); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Get the data from the POST request $name = $_POST['name'] ?? ''; $email = $_POST['email'] ?? ''; $notes = $_POST['notes'] ?? ''; // Prepare SQL and bind parameters $stmt = $pdo->prepare("INSERT INTO users (name, email, notes) VALUES (:name, :email, :notes)"); $stmt->bindParam(':name', $name); $stmt->bindParam(':email', $email); $stmt->bindParam(':notes', $notes); // Execute the prepared statement $stmt->execute(); error_log("Data saved successfully"); echo json_encode(['status' => 'success', 'message' => 'Data saved successfully']); } catch(PDOException $e) { error_log("Error saving data: " . $e->getMessage()); echo json_encode(['status' => 'error', 'message' => $e->getMessage()]); } ?> ![]() // submit.php <?php // Database connection $servername = "localhost"; // Change if necessary $username = "your_username"; // Your database username $password = "your_password"; // Your database password $dbname = "your_database"; // Your database name // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // Get data from POST request $firstName = $_POST['firstName']; $lastName = $_POST['lastName']; $email = $_POST['email']; $notes = $_POST['notes']; // Prepare and bind $stmt = $conn->prepare("INSERT INTO users (first_name, last_name, email, notes) VALUES (?, ?, ?, ?)"); $stmt->bind_param("ssss", $firstName, $lastName, $email, $notes); // Execute the statement if ($stmt->execute()) { echo json_encode(["success" => true]); } else { echo json_encode(["success" => false, "error" => $stmt->error]); } // Close connections $stmt->close(); $conn->close(); ?> ![]() // test_connection.php <?php require_once 'db_connection.php'; echo "If you see this message without any errors, the database connection is working.<br>"; // Add this new code to test a simple query try { $result = $pdo->query("SELECT 1"); if ($result !== false) { echo "Query executed successfully. Full database functionality confirmed."; } else { echo "Error executing query. Connection established but query failed."; } } catch(PDOException $e) { echo "Query error: " . $e->getMessage(); } ?> |
In topic "when working with perplexity"
|
I understand your frustration with the challenges you've faced in previous projects, and I appreciate your perseverance. I'm definitely up for the challenge of helping you modernize the UI Builder framework from 2009 for your personal use. Modernizing legacy applications can be complex, but it's also an exciting opportunity to enhance functionality and user experience. To modernize the UI Builder framework, we can take a phased approach:
Assessment: We'll evaluate the current state of the framework, identifying its strengths and limitations1. Planning: We'll develop a modernization strategy, focusing on key areas for improvement while maintaining compatibility with the original system1. Incremental updates: We'll start by making small, manageable changes to the framework, such as: Updating the UI components to have a more modern look and feel3 Implementing responsive design principles for better cross-device compatibility2 Introducing modern javascript features and patterns where possible2 Performance optimization: We'll refactor parts of the codebase to improve speed and efficiency3. Integration of modern tools: We'll explore ways to integrate modern development tools and practices without completely overhauling the system4. Testing and validation: Throughout the process, we'll ensure that changes don't break existing functionality1. As we work on this project, I'll explain concepts and changes in a way that helps you understand and learn. We'll take it step by step, and I'm here to answer any questions you have along the way. Let's start by reviewing the source code you have and identifying specific areas you'd like to improve. |
In topic "UI builder chrome try 1"
|
Yes, your explanation makes sense. You're working on a project to emulate a small clone of the IBuilder 2009, and you want to integrate a custom screen capture component into the UI builder. The goal is to make this component available in the IDE (Integrated Development Environment) so that it can be used in both design and code modes without errors. The idea is to create a registry system that dynamically loads components from a specified directory (in this case, the App/components/ directory) and integrates them into the UI builder. 0_tst ├── App/ │ ├── components/ │ │ └── ScreenCaptureTool.js │ ├── config/ │ │ └── registry.json │ └── js/ │ └── index.js ├── runtime/ └── index.html |
Yes, your explanation makes sense. You're working on a project to emulate a small clone of the IBuilder 2009, and you want to integrate a custom screen capture component into the UI builder. The goal is to make this component available in the IDE (Integrated Development Environment) so that it can be used in both design and code modes without errors. The idea is to create a registry system that dynamically loads components from a specified directory (in this case, the App/components/ directory) and integrates them into the UI builder. 0_tst ├── App/ │ ├── components/ │ │ └── ScreenCaptureTool.js │ ├── config/ │ │ └── registry.json │ └── js/ │ └── index.js ├── runtime/ └── index.html ![]() <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>UI Builder</title> <!-- Loading indicator --> <div id="loading">Loading...</div> <!-- Include the LINB framework's javascript files --> <script type="text/javascript" src="/runtime/jsLinb/js/linb-all.js"></script> <script type="text/javascript" src="/runtime/jsLinb/js/adv-all.js"></script> <!-- Include your index.js file --> <script type="text/javascript" src="App/js/index.js"></script> <!-- Your UI Builder content --> <script type="text/javascript"> // Set the theme and load the app console.log('Setting theme and loading app...'); linb.UI.setTheme('default'); linb.Com.load('App', function(){linb('loading').remove()}, 'en'); </script> ![]() ├── App/ │ ├── components/ │ │ └── ScreenCaptureTool.js // File: ScreenCaptureTool.js Class('ScreenCaptureTool', 'linb.Com', { Instance: { initialize: function () { this.autoDestroy = true; this.properties = {}; this.capturedImages = []; // Store captured images }, iniComponents: function () { var host = this, children = [], append = function (child) { children.push(child.get(0)) }; // Add UI elements for the screen capture tool append( (new linb.UI.Block) .setHost(host, "ctl_capture_box") .setDock("fill") .setHtml('<div class="screen-capture-tool">Draw a rectangle to capture the screen.</div>') ); // Add a button to trigger screen capture append( (new linb.UI.Button) .setHost(host, "ctl_capture_button") .setCaption("Capture") .onclick(() => this.capture()) ); // Add a button to save the captured image append( (new linb.UI.Button) .setHost(host, "ctl_save_button") .setCaption("Save") .onclick(() => this.save()) ); return children; }, capture: function () { // Simulate screen capture logic const canvas = document.createElement('canvas'); canvas.width = 200; // Example width canvas.height = 200; // Example height const ctx = canvas.getContext('2d'); // Draw a placeholder rectangle (replace this with actual screen capture logic) ctx.fillstyle = '#ccc'; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.strokestyle = '#000'; ctx.strokeRect(0, 0, canvas.width, canvas.height); // Store the captured image this.capturedImages.push(canvas.toDataURL('image/png')); console.log('Screen captured!'); }, save: function () { if (this.capturedImages.length === 0) { console.log('No images to save.'); return; } // Save the last captured image const imageData = this.capturedImages.pop(); const link = document.createElement('a'); link.href = imageData; link.download = `capture_{Date.now()}.png`; link.click(); console.log('Image saved!'); } } }); // Attach the component to the global window object if (typeof window !== 'undefined') { window.ScreenCaptureTool = ScreenCaptureTool; } ![]() ├── config/ │ │ └── registry.json { "components": [ { "name": "ScreenCaptureTool", "path": "/vb3/VisualJS/projects/builder_my_try1/App/components/ScreenCaptureTool.js", "displayName": "Screen Cap", "category": "Tools" } ] } ![]() ── js/ │ └── index.js // File: index.js // Description: Main entry point for the UI Builder application. // Updates: Added fallback method for adding components to the panel. Class('App', 'linb.Com', { Instance: { initialize: function () { console.log('Initializing App...'); this.autoDestroy = true; this.properties = {}; this.capturedImages = []; // Store captured images }, iniComponents: function () { console.log('Initializing components...'); var host = this, children = [], append = function (child) { children.push(child.get(0)) }; // Add UI elements for the UI Builder append( (new linb.UI.MenuBar) .setHost(host, "ctl_menubar1") .setItems([{ "id": "item a", "sub": ["sub a1", "sub a2", "sub a3", "sub a4"], "caption": "Project" }, { "id": "item b", "sub": ["sub b1", "sub b2", "sub b3", "sub b4"], "caption": "Build" }, { "id": "item c", "sub": ["Screen Capture", "sub c2", "sub b3", "sub c4"], "caption": "Tools:" }, { "id": "item d", "sub": ["sub d1", "sub d2", "sub d3", "sub d4"], "caption": "Help:" }]) ); append( (new linb.UI.Block) .setHost(host, "ctl_block7") .setDock("top") .setHeight(30) ); append( (new linb.UI.Layout) .setHost(host, "ctl_layout1") .setItems([{ "id": "before", "pos": "before", "min": 20, "size": 170, "locked": false, "folded": false, "hidden": false, "cmd": true }, { "id": "main", "min": 10 }, { "id": "after", "pos": "after", "min": 10, "size": 10, "locked": false, "folded": false, "hidden": false, "cmd": true }]) .setType("horizontal") ); host.ctl_layout1.append( (new linb.UI.Tabs) .setHost(host, "ctl_tabs1") .setItems([{ "id": "a", "caption": "Pages", "image": "img/demo.gif" }, { "id": "b", "caption": "Project", "image": "img/demo.gif" }]) .setDock("top") .setValue("b") , 'before'); host.ctl_tabs1.append( (new linb.UI.TreeView) .setHost(host, "ctl_treeview1") .setItems([{ "id": "item a", "sub": ["sub a1", "sub a2", "sub a3", "sub a4"], "caption": "item a" }, { "id": "item b", "sub": ["sub b1", "sub b2", "sub b3", "sub b4"], "caption": "item b" }]) , 'b'); host.ctl_layout1.append( (new linb.UI.Layout) .setHost(host, "ctl_layout2") .setItems([ { "id": "before", "pos": "before", "min": 1, "max": 400, "size": 60, "locked": false, "folded": false, "hidden": false, "cmd": true, "resizable": true, "dividerVisible": true }, { "id": "main", "min": 10, "resizable": true } ]) .setType("vertical") , 'before'); host.ctl_layout2.append( (new linb.UI.TreeBar) .setHost(host, "ctl_treebar1") .setItems([{ "id": "item a", "sub": ["Screen Capture", "sub a2", "sub a3", "sub a4"], "caption": "Component" }, { "id": "item b", "sub": ["sub b1", "sub b2", "sub b3", "sub b4"], "caption": "item b" }]) , 'main'); return children; }, iniExComs: function (com, threadid) { console.log('Initializing external components...'); this.initializeRegistry(); // Initialize the registry }, initializeRegistry: function () { console.log('Initializing registry...'); const self = this; // Fetch the registry.json file fetch('/0_tst/App/config/registry.json') .then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(registry => { console.log('Registry loaded:', registry); // Load each component from the registry for (const componentData of registry.components) { self.loadComponent(componentData); } }) .catch(error => { console.error('Error loading registry:', error); }); }, loadComponent: function (componentData) { console.log('Loading component:', componentData.name); console.log('Component path:', componentData.path); // Log the path const self = this; function loadscript(url) { return new Promise((resolve, reject) => { const script = document.createElement('script'); script.src = url; script.onload = () => { console.log(`script loaded: ${url}`); // Log successful load resolve(); }; script.onerror = (error) => { console.error(`script failed to load: ${url}`, error); // Log failure reject(error); }; document.head.appendChild(script); }); } loadscript(componentData.path) .then(() => { console.log(`Component "${componentData.name}" loaded successfully.`); if (window[componentData.name]) { console.log(`Component "${componentData.name}" is available globally.`); self.addToPanel(componentData); } else { console.error(`Component "${componentData.name}" is not defined.`); } }) .catch(error => { console.error(`Error loading component "${componentData.name}":`, error); }); }, addToPanel: function (componentData) { console.log('Adding component to panel:', componentData.name); // Check if linb.UI.MenuItem is available if (typeof linb.UI.MenuItem === 'undefined') { console.error('linb.UI.MenuItem is not defined. Using fallback method to add component.'); // Fallback: Create a simple button instead of a MenuItem const button = document.createElement('button'); button.textContent = componentData.displayName; button.onclick = () => { // Instantiate the component and render it onto the palette const instance = new window[componentData.name](); instance.renderOnto('palette'); }; // Get or create a panel for the component's category let panel = document.getElementById(componentData.category); if (!panel) { panel = document.createElement('div'); panel.id = componentData.category; document.body.appendChild(panel); } // Add the button to the panel panel.appendChild(button); return; } // Create a menu item for the component const menuItem = new linb.UI.MenuItem(componentData.displayName); menuItem.onclick(() => { // Instantiate the component and render it onto the palette const instance = new window[componentData.name](); instance.renderOnto('palette'); }); // Get or create a panel for the component's category let panel = linb.UI.getPanel(componentData.category); if (!panel) { panel = new linb.UI.Panel(componentData.category); linb.UI.addPanel(panel); // Add the panel to the UI Builder } // Add the menu item to the panel panel.addItem(menuItem); } } }); |
Last session text // File: SessionContext.txt // Description: Key information and context for bringing the AI up to speed in a new session. // 1. Project Overview: // - The project is a small clone of the IBuilder 2009, emulating its functionality. // - The goal is to integrate custom components (e.g., ScreenCaptureTool) into a UI Builder IDE. // - The UI Builder is built using the LINB framework. // 2. Directory Structure: // ├── App/ // │ ├── components/ // │ │ └── ScreenCaptureTool.js // │ ├── config/ // │ │ └── registry.json // │ └── js/ // │ └── index.js // ├── runtime/ // └── index.html // 3. Key Files: // - index.html: Main HTML file for the UI Builder application. // - ScreenCaptureTool.js: Custom component for screen capture functionality. // - registry.json: Registry file listing components and their metadata. // - index.js: Main javascript file for initializing the UI Builder and dynamically loading components. // 4. Current Status: // - The ScreenCaptureTool component is defined and ready for integration. // - The registry.json file lists the ScreenCaptureTool component. // - The index.js file dynamically loads components from the registry and adds them to the UI Builder's panel. // - A fallback mechanism is in place to handle cases where linb.UI.MenuItem is not available. // 5. Recent Testing: // - The application was tested remotely at http://mobile1.onlinewebshop.net/0_tst/. // - Console logs indicate that the ScreenCaptureTool component was loaded successfully but linb.UI.MenuItem is not defined. // - The fallback method was triggered, and a button for the ScreenCaptureTool was added to the panel. // 6. Next Steps: // - Ensure the ScreenCaptureTool component appears and functions correctly in the UI Builder. // - Debug the missing linb.UI.MenuItem issue or refine the fallback mechanism. // - Test the integration in both design and code modes. // 7. Key Notes: // - The LINB framework is used for UI components and layout. // - Components are dynamically loaded from the registry.json file. // - The application is deployed on a remote web server for testing. // 8. Questions for the AI: // - Are there any issues with the current implementation? // - How can we improve the fallback mechanism for adding components? // - What steps should we take to ensure the ScreenCaptureTool works as expected? // - Are there any additional features or components we should consider adding? // End of SessionContext.txt |
In topic "Black blue tooth key board"
|
---|
Brand is ONN. How to connect to RPie Dose not need a usb plugged in. On and off switch it on the right side At the top of the key board right corner you will see blue tooth 1, 2, 3 lights. Using the fn key (lower left corner) and the "E" blue tooth 2 select that then go to RPie and connect. Works pretty good. |