melinsoftware / meos Goto Github PK
View Code? Open in Web Editor NEWMeOS - A Much Easier Orienteering System
License: GNU Affero General Public License v3.0
MeOS - A Much Easier Orienteering System
License: GNU Affero General Public License v3.0
Typos in the english text of the Services Window. Here is the same text, with fixes in italics:
MeOS REST API lets you access competition data via a web connection. You can show result lists directly in a web browser, but you can also request competition data and results in an XML format, suitable for further processing in third party programs and apps.
If I delete a class, MOP will straight up send a MOPComplete in the next update. If I add a class, nothing happens; the next difference doesn't show it. If I add a new runner, and assign them as the first runner of this new class, the update will say this runner was deleted.
If we use, not recommended (by sportident) control number 30 in a course, and we use 'import' functionality, there is an incoherence on MeOS:
a) Control list importing: OK (>= 30):
https://github.com/melinsoftware/meos/blob/master/code/oImportExport.cpp#L1483
b) Course control adding: NOK (>30):
https://github.com/melinsoftware/meos/blob/master/code/oImportExport.cpp#L1592
Both 'importers' must ignore control number 30 or accept it.
Notes to this:
For now, it is required to download manually the CSV or XML files and then import them in MeOS.
Supporting HTTP/HTTPS protocols would make it 'one-click' operation.
The default URL may be configured as a local setting. Almost no UI change is required: the field Filename IOF... shall just be adapted and the behaviour can be adapted by detecting "http"/"https" at the beginning of the path.
Everytime a control has focus, it would loose it, if a service started to run. This makes it very hard to use forms, if services (like liveresults) are run very often (less than 15sec)
If I do not disconnect the SI reader before closing the competition, when I open the next one, Autosearch will not find any available SI reader.
It is also not possible to disconnect from software the SI reader after closing the event. I have to close the app or disconnect reader from PC to be able to connect to it again.
When running a small competition on 1 computer, you would like to have 2 masters connected. One for registering competitors and 1 for reading out results at the same time. This works as it is (3.4.782), but the windows are overlapping. Ie you cannot see the results window because the register window is on top.
To recreate this you start "Quick entry mode" and "Readout/radio" from the Sportident tab.
If the windows where separated and not overlapping would be great. Either as free floating windows, or just as the "Services" work when you have more than one running at the same time.
Results Online Services sends multiple requests if response is not received in one second.
Lets say the accepting server do some heavy lifting with incoming data and it takes 2.5 seconds to respond with OK status.
Current behavior works like this.
time | MeOS | Server
---------------------------------------------------
0s | FIRST request is send | working on FIRST request
1s | SECOND request is send | working on FIRST and SECOND request
2s | THIRD request is send | working on FIRST, SECOND and receiving THIRD request
2.1s | | FIRST request done, sending OK
2.2s | receives OK, | THIRD request payload is cut in the middle, only part of the XML is received
THIRD request stops
There can be workarounds (and maybe only release build or query optimization can solve this issue for me, as all it take is to send reply under second). However, I think the current behavior is sub-optimal.
During our weekly events, we don't have a registered start list. We use a precreated runners database, all readouts are interactive.
If we create a list of rental cards and then readout one such card, then
Competitor's status would be useful if for example you want to create results list without time for open competitors without a medical certificate. For now, the closest type is Competitor's total time / status.
Sometimes, when reading data from e-punch on finish for athlete (1), MeOS tell me that this e-punch is for another athlete (2) (who actually finished), and ask to choose the group. There is no "Cancel" button to prevent this, thus we rewrite results for (2) with data from e-punch of (1). Usually, this happens when we cycle e-punchs (reuse them after clearing). Why this occur, and how to prevent this behavior?
Thanks!
Quotes in team name for relay prevent the team from been displayed in Live Result (https://liveresultat.orientering.se/).
Example : O'Jura team members were not displayed, but was fixed calling the team OJura.
Probably related to emmaupdate.php as I thought having experienced similar issue with mop php sample code before fixing it.
As of now, MeOS only shows runners birth year in the runners database. If it is exported to IOF XML, it fills BirthDate field with January 1st of that year.
It would be better if it was possible to enter whole birth date (and export it) in runners database.
During our 2 day event, we used 2 services:
A small progress bar would appear in the top left corner, indicating that a service was executed.
Once in a while, such progress bar would take longer than expected, and freeze meos for a while. Thus we were unable to read results or do anything with MeOS.
Incresing Live Results service interval would decrese the amount of freezes, but not eliminate them.
Hi,
I have defined a rogaining event for teams of 3 runners. They starts simultaneously and the time of the team is the time of the last runner. But I don't see how to set 4 mandatory controls for all 3 runners without imposing their order.
Any hint? :-)
Environment: MEOS-OZ version 3.8.1306.1
When importing an import, previously saved as a meos backup which contains a course which has rogaining score controls, the course comes through as [From class] without the course name at the the beginning.
This means results won't contain the rogaining points.
See attached:
Workaround:
Manually set course to the correct course for each competitor on the rogaining course and save (Click off and then on again)
Course controls now appear in right hand box and points in results.
Thanks for all your work.
Regards,
Martin Kozma
Bayside Kangaroos Orienteering Club
It would be great if we had better control of drawing start times for vakancies - vacancies as first/vacancies as last in group
The Content-Type header is not set when uploading results online. Many servers are configured to block this, if you have a shared hosting provider, it is usually not an option to disable these security rules as the provider won't let you.
It would be great if MeOS started sending a application/xml or zip Content-Type header in future versions to let the server know what data it is receiving.
The rule of the rogaining event I am configuring is 1 point of penalty / 4 minutes. But it seems MeOS 3.6 only supports integer number of points / minutes: so the minimum is 1 point / minute.
Is there a way to specify a such thing?
We need an extra field in quick entry to record car registration numbers so that organisers can check if there are remaining participants still not accounted for.
The text field could be used for anything. Car registration or mobile mumber etc.
The text field could be optional (local settings)
This would allow us to process the many EODs (Enter on the days) without having the participant to go to registration desk to provide this information.
Thanks for all your work.
Cheers,
Martin Kozma
Bayside Kangaroos Orienteetring Club
Could you explain how the time lost in the results list is estimated?
Thanks
A suggestion for custom service that will automatically upload splits XML file to http://events.worldofo.com/woosplits.
Other than generating Winsplits result file, it needs to be URL-encoded and sent to the server.
Working PHP code for splits upload:
<?php
$file = file_get_contents('splits.xml', true);
$url=urlencode($file);
$data="data=".$url."&fileending=xml";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://events.worldofo.com/woosplits/uploadres.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
$data);
// Receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close ($ch);
$json=json_decode($server_output);
echo "http://events.worldofo.com/woosplits/?file=upload/".$json->name."\n";
?>
The response is URL to split analysis.
I created an event with zero time 12:00:00. After adding groups and competitors, I tried to draw start times manualy.
If the first start time matches with event zero time, MeOS crashes.
After uploading a local competition to database, changes to competitors made on other clients connected to the database are not showing on the original MeOS instance unless that instance disconnects/reconnects to the competition on the server.
It looks as though the problem is that the updated
timestamp in the SqlUpdated
structure is still an empty string at the time that it is used to form a query in MeosSQL::selectUpdated
. When the query created is used, the timestamp is invalid and no new data is retrieved for the list from the database.
My simple fix was to alter the query generated in MeosSQL::selectUpdated
if the updated
member was empty, but there is probably a better way to address this.
The calculation of GMT start times can go wrong in oEvent::getAbsDateTimeISO
if the time-zone offset is greater than the start time. Example - start time 10:34:00, location GMT + 11.
This code assumes that t
is signed, but it is declared as DWORD.
int offset = ::getTimeZoneInfo(Date);
t += offset;
if (t < 0) {
extraDay = -1;
t += 3600 * 24;
}
else {
extraDay = t / (3600*24);
}
Changing declaration to unsigned long t;
fixes this I think.
Hello!
Is it possible to customize split printing form (except fixed custom text)? If not, do you plan to add this feature?
When start times have been drawn and published, how to postpone them all for a fix amount of time (e.g. due to a control issue discovered just before the event or a weather alert)?
Is it possible to add option to export final results in IOF 3.0 format for multistage events?
The font size sometimes suddenly changes during display to huge or tiny characters.
The space between lines is sometimes too large.
It seems to happen especially when several monitors are used with different dpi.
As can be seen in this Total results report the "Efter" (Behind) column is not correctly calculated.
https://eventor.orientering.se/Documents/Event/72102/Totalresultat
The value always seems to be one second longer than the actual total time.
Example:
H80 (12 / 12) Totaltid Efter Etapp Bomtid
1. Anders Carlsson Skåneslättens OL 2:04:37 +124:38 38:13 1. 04:48
2. Raimo Salminen OK Pan-Kristianstad 2:15:04 +135:05 41:53 3. +3:40 04:50
In void RunnerDB::loadClubs(const wstring &file), there is the following logic:
for (it=xl.begin(); it != xl.end(); ++it) {
if (it->is("Club")){
oDBClubEntry c(oe, cdb.size(), this);
where oe is an OEvent object.
Constructors for oDBClubEntry are:
oDBClubEntry::oDBClubEntry(oEvent *oe, int id, int ix, RunnerDB *dbin) : oClub(oe, id); // etc
oDBClubEntry::oDBClubEntry(const oClub &c, int ix, RunnerDB *dbin) : oClub(c); //etc
The second constructor is called instead of the first one. I guess that the argument count matches and for some reason the C++ compiler manages to make an oClub& from an oEvent*, so the oClub constructor in the initialiser treats the oEvent object as an oClub. So much for type checking :)
This is an old problem I think, normally it causes no problem, but I must have some different data at the moment or a different VS2015 compiler as I get a Windows exception when the oClub constructor runs.
Cheers,
Andy
Meos not correctly uploading results for Point limit rogaining events.
Instead Meos is uploading the results according to time.
What will it take to compile and run this under linux? I can help with the task if it is not too big an effort.
Refreshing http://localhost:2009/meos?difference=zero means that classes and runners sometimes tell me what course they are using, sometimes not.
With:
<cls id="2" ord="20" radio="142" crs="2">Medium</cls>
<cmp id="1" card="500114">
<base org="14" cls="1" stat="1" st="651600" rt="25680" crs="1">Hans Persson</base>
<input it="0" tstat="1"/>
</cmp>
Without:
<cls id="2" ord="20" radio="142">Medium</cls>
<cmp id="1" card="500114">
<base org="14" cls="1" stat="1" st="651600" rt="25680">Hans Persson</base>
<input it="0" tstat="1"/>
</cmp>
Either the whole file contains course info (where applicable), or none of it does.
I (currently) have no use for course info, so for me this is merely inconsistent behavior, not problematic.
When MeOS is started for the first time, most settings are not available in Change local settings...
The workaround is to open an event and display once each thumbnail (runners, lists, etc.).
But it would be nice to initialize the list of parameters at installation time.
Hi guys, I can see that there is a comment in the resources section of the website:
"You can build MeOS in Visual Studio 2008 or 2010. We plan to publish some instructions soon."
Would it possible to get the details of this updated on the page please?
Is it possible to add option to set priority of classes when drawing start times? Like set most young/elder groups at the begining of the event.
If we create a runners/clubs database for our events, we export them between events with "Export Clubs/Persons (IOF-XML)" options.
The persons XML is exported having Organisation marked with ID:
<Competitor>
<Person>
<Name>
<Given>Māris</Given>
<Family>Zinbergs</Family>
</Name>
</Person>
<Organisation>
<Id>40</Id>
</Organisation>
</Competitor>
But clubs xml does not have this ID in the export:
<Organisation>
<Name>Siguldas Takas</Name>
</Organisation>
We are unable to use these XMLs for import as persons get assigned the wrong clubs.
If I add the manually to the exported club XML, the import works correctly.
A user (Patrice Lavallee) reported me that the following error message has been displayed to him in Swedish:
Ett okänt fel inträffade
This sentence isn't in the language file (at least not in the english, german and french one).
It can be found in the following C++ files :
It need probably be added to the language files.
Google translate gave me "An unknown error occurred". If this is correct, it will be translated in french as "Une erreur inconnue s'est produite".
We are planning on organising a sprint event, where we need a precision of 0.1 sec.
We have configured the SI stations for "Sprint 4ms", but MeOS still seems to read only values upto 1sec precision.
Is this configurable or is this not available at this time?
I'm not sure if this is some kind of misconfiguration or a bug in MeOS, but this weekend Meos did not recognized almost 90% of runners' course when their SI unit was read - I had to manually select the class they ran.
It worked fine on Saturday where I had 3 courses (A1,A2,B) with 3 associated classes (A1,A2,B), but Sunday it failed with a similar setup but more courses (say A1,A2,B but also variant A1, variant A2, variant B) and again 6 classes associated but not with the exact same name (say first A1, first A2, first B, second A1, second A2, second B).
I thought that MeOS would smartly match the class/course with the best match given the controls read on the SI Unit?
iof xml exports (startlist, resultslist) are missing the Id for person.
it it important to be able to properly map information exported using MeOS Online Protocol with documents exported as IOF XML
<Person>
<Id>42</Id> <!-- missing -->
<Name>
<Family>Hirs</Family>
<Given>Otakar</Given>
</Name>
</Person>
When uploading online results, if zip is enabled and the XML size is smaller than 1024 bytes, it will still send the application/zip
content header.
Fix: Ensure that the if statement at 438 (onlineresults.cpp) checks if the file will be sent as raw XML even though zip is enabled.
When no timing / timing classes are mixed in a course, runners appear to be sorted by time anyway (results by course). Runners in no timing classes should be listed at the end of the results, and should not be taken into account when computing the place of runners.
As there are times You have to do other things with MeOS, while the cards are being read out, it would be nice if the small popup window would show some info, if the card is borrowed and should be returned.
The relevant place in code:
Lines 2615 to 2642 in 338fb3c
As we would like to deploy DB to a server, we first set up everything without SSL, to verify that everything worked - it did.
Once we set up SSL for meos user (REQUIRE SSL
), we are no longer able to connect to the server. The error:
Access denied for user 'meos'@'XXX.XXX.XXX.XXX' (using password: YES)
We are able to connect with MySQL Workbench with SSL.
Is there any configuration that must be done on our MeOS/MySQL instance to be able to connect over SSL?
We are using:
MeOS: Version 3.5.843 RC2
MySQL: 5.7.21 MySQL Comunity Server (GPL)
Why it is currently not possible to enter Id for runners? We want to use it as a registration number within our orienteering series.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.