Skip to content

Commit

Permalink
prace
Browse files Browse the repository at this point in the history
  • Loading branch information
martinrotter committed Feb 19, 2024
1 parent 4329de3 commit 5799573
Show file tree
Hide file tree
Showing 8 changed files with 55 additions and 50 deletions.
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Utilita umožňuje načítání/ukládání rozpracovaných zápisů a následn

ZZZO je svobodná aplikace, která bude vždy zdarma! ZZZO je desktopová aplikace - vaše data tak nejsou uložena v žádném cloudu a máte je tak vždy pod kontrolou.

### Nejnovější verzi aplikace lze stáhnout [zde](https://github.com/martinrotter/zzzo/releases/download/devbuild/zzzo-latest.zip).
### Nejnovější verzi aplikace lze stáhnout [zde](https://github.com/martinrotter/zzzo/releases) vždycky v sekci `Assets`. Testovací verzi aplikace potom najdete přímo [zde](https://github.com/martinrotter/zzzo/releases/download/devbuild/zzzo-latest.zip).

### Instalace
1. Stáhněte si některou [verzi](https://github.com/martinrotter/zzzo/releases) aplikace.
Expand All @@ -17,8 +17,10 @@ ZZZO je svobodná aplikace, která bude vždy zdarma! ZZZO je desktopová aplika

### Seznam funkcí
* rozpracované zápisy lze ukládat a načítat a kdykoliv tak pokračovat v práci,
* program umí dle zadaného názvu obce najít online logo dané obce,
* lze pohodlně editovat seznam zastupitelů, body programu a další související věci,
* vygenerované zápisy odpovídají § 95 odst. 1 zákona č. 128/2000 Sb. o obcích,
* aplikace podporuje standardní CSS styly pro úpravu formátu výstupního dokumentu, je tedy docela jednoduché implementovat zcela vlastní styl, který poté stačí uložit do podsložky `Styles`,
* aplikace nevyžaduje instalaci a podporuje 32/64 bitovou variantu OS Windows (8+),
* aplikace má zcela otevřený [zdrojový kód](ZZZO), který kompletně podléhá licenci [GNU GPLv3](LICENSE).

Expand All @@ -29,5 +31,7 @@ ZZZO je svobodná aplikace, která bude vždy zdarma! ZZZO je desktopová aplika
4. U každého bodu programu můžete vytvořit jednotlivá usnesení. Seznam přítomných zastupitelů v sekci `Usnesení` nelze měnit, je aktualizován automaticky. Pouze u každého zastupitele vyberte jeho volbu v hlasování o daném usnesení.
5. Až budete hotoví, přejděte do sekce `Generátor`. V této sekci tlačítkem `Přegenerovat dokument` nejdříve vygenerujete výsledný dokument, který se zobrazí v zabudovaném náhledu. Pokud jste s výsledkem spokojení, tak můžete výsledek exportovat do některého z nabízených formátů nebo jej rovnou vytisknout.

Samozřejmě, program umožňuje ukládat rozpracovaná zasedání do datových souborů (koncovka `.zzzo`), což se dá použít k deduplikaci práce. Například seznam zastupitelů tak nemusíte vytvářet vždy, stačí načíst předchozí zasedání, upravit a uložit pod novým názvem souboru.

### Hlášení chyb
Pokud v programu objevíte chybu nebo máte nápad na její zlepšení, můžete to nahlásit [zde](https://github.com/martinrotter/generator-zasedani-zo/issues/new).
Pokud v programu objevíte chybu nebo máte nápad na jeho zlepšení, můžete to nahlásit [zde](https://github.com/martinrotter/generator-zasedani-zo/issues/new).
2 changes: 1 addition & 1 deletion ZZZO/ZZZO.Common/Constants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ static Names()
{
FileVersionInfo vi = Utils.GetExecutingAssemblyVersionInfo();

AppVersion = vi.ProductVersion;
AppVersion = vi.FileVersion;
AppAuthor = vi.CompanyName;

AppBuildDate = DateTime.Parse(Resources.build_date);
Expand Down
36 changes: 14 additions & 22 deletions ZZZO/ZZZO.Common/Generators/GeneratorHtml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ public override string FileSuffix
public List<string> Styles
{
get;
}
} = Directory.GetFiles(Constants.PathsAndFiles.AppStylesFolder, "*", SearchOption.TopDirectoryOnly)
.Select(Path.GetFileName).ToList();

public override string Title
{
Expand All @@ -54,16 +55,6 @@ public override string Title

#endregion

#region Konstruktory

public GeneratorHtml()
{
Styles = Directory.GetFiles(Constants.PathsAndFiles.AppStylesFolder, "*", SearchOption.TopDirectoryOnly)
.Select(Path.GetFileName).ToList();
}

#endregion

#region Metody

protected override byte[] GenerateDoWork(Zasedani zas, IProgress<int> progress, object param)
Expand Down Expand Up @@ -286,7 +277,7 @@ private void GenerateHeader(XmlElement html, Zasedani zas, IProgress<int> progre

private void GenerateProgramEntries(XmlElement body, IEnumerable<BodProgramu> bodyProgramu)
{
XmlElement div = body.AppendElem("div");
XmlElement div = body.AppendElem("div").AppendClass("program");
XmlElement mainOl = div.AppendElem("ol");
XmlElement nestedOl = null;

Expand Down Expand Up @@ -325,19 +316,20 @@ private string GenerateResolution(
XmlElement body, Zasedani zas, BodProgramu programEntry, Usneseni resolution, int lastOrder, string replacementTitle = null)
{
string generatedResolutionTitle = null;
XmlElement root = body.AppendElem("div").AppendClass("resolution-container");

if (!programEntry.SchvalovaniProgramu)
{
if (resolution.ZoBereNaVedomi)
{
body.AppendElem("p").InnerText = $"ZO {zas.NazevObce} bere na vědomí.";
root.AppendElem("p").AppendClass("resolution-text").InnerText = $"ZO {zas.NazevObce} bere na vědomí.";
}
else
{
generatedResolutionTitle = resolution.GenerateTitle(lastOrder + 1, zas);

body.AppendElem("p").InnerText = "Návrh usnesení:";
body.AppendElem("p").InnerText = generatedResolutionTitle;
root.AppendElem("p").AppendClass("resolution-text-heading").InnerText = "Návrh usnesení:";
root.AppendElem("p").AppendClass("resolution-text").InnerText = generatedResolutionTitle;
}
}

Expand All @@ -363,22 +355,22 @@ private string GenerateResolution(
string choiceDontKnowStr = choiceDontKnow.Count() + (choiceDontKnow.Any() ? $" ({string.Join(", ", choiceDontKnow.Select(ch => ch.Zastupitel.Jmeno + " " + ch.Zastupitel.Prijmeni))})" : string.Empty);
bool accepted = choiceFor.Count() > zas.Zastupitele.Count / 2;

XmlElement div = body.AppendElem("div").AppendClass("resolution").AppendClass(accepted ? "success" : "failure");
XmlElement div = root.AppendElem("div").AppendClass("resolution-vote-box").AppendClass(accepted ? "success" : "failure");

div.AppendElem("p").InnerText = $"{replacementTitle ?? "Hlasování o návrhu usnesení"}:";
div.AppendElem("p").AppendClass("resolution-vote-heading").InnerText = $"{replacementTitle ?? "Hlasování o návrhu usnesení"}:";

div.AppendElem("p").InnerText =
$"<span class=\"resolution-vote resolution-success\">\u2713</span> PRO: {choiceForStr}<br/>" +
$"<span class=\"resolution-vote resolution-failure\">\u00D7</span> PROTI: {choiceAgainstStr}<br/>" +
$"<span class=\"resolution-vote resolution-dontknow\">?</span> ZDRŽUJE SE: {choiceDontKnowStr}";
$"<span class=\"resolution-vote resolution-success-icon\">\u2713</span> PRO: {choiceForStr}<br/>" +
$"<span class=\"resolution-vote resolution-failure-icon\">\u00D7</span> PROTI: {choiceAgainstStr}<br/>" +
$"<span class=\"resolution-vote resolution-dontknow-icon\">?</span> ZDRŽUJE SE: {choiceDontKnowStr}";

if (accepted)
{
div.AppendElem("p").InnerText = "<span class=\"resolution-success\">\u2713</span> Návrh byl přijat.";
div.AppendElem("p").AppendClass("resolution-success").InnerText = "<span class=\"resolution-success-icon\">\u2713</span> Návrh byl přijat.";
}
else
{
div.AppendElem("p").InnerText = "<span class=\"resolution-failure\">\u00D7</span> Návrh nebyl přijat.";
div.AppendElem("p").AppendClass("resolution-failure").InnerText = "<span class=\"resolution-failure-icon\">\u00D7</span> Návrh nebyl přijat.";
}

return accepted ? generatedResolutionTitle : null;
Expand Down
6 changes: 4 additions & 2 deletions ZZZO/ZZZO.Common/ZZZO.Common.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@
<UseWPF>true</UseWPF>
<LangVersion>11.0</LangVersion>
<PlatformTarget>x86</PlatformTarget>
<AssemblyVersion>0.0.1.0</AssemblyVersion>
<FileVersion>0.0.1.0</FileVersion>
<AssemblyVersion>0.0.2</AssemblyVersion>
<ProductVersion>$(AssemblyVersion)</ProductVersion>
<InformationalVersion>$(AssemblyVersion)$(SourceRevisionId)</InformationalVersion>
<Copyright>Martin Rotter</Copyright>
</PropertyGroup>

<ItemGroup>
Expand Down
4 changes: 2 additions & 2 deletions ZZZO/ZZZO/Controls/Program.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="5*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
Expand Down
15 changes: 10 additions & 5 deletions ZZZO/ZZZO/Controls/Resolution.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@
<converters:InverseBooleanConverter x:Key="InverseBooleanConverter" />
<converters:EnumConverter x:Key="EnumConverter" />
<converters:CollapseOnTrueConverter x:Key="CollapseOnTrueConverter" />

<Style x:Key="StyleGridTextCenterVertical" TargetType="{x:Type TextBlock}"
BasedOn="{StaticResource MaterialDesignDataGridTextColumnStyle}">
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</UserControl.Resources>
<StackPanel Orientation="Vertical">
<CheckBox Name="CbBereNaVedomi"
Expand Down Expand Up @@ -43,27 +48,26 @@
TargetType="{x:Type DataGridRow}">
<Setter Property="IsEnabled"
Value="{Binding Zastupitel.JePritomen}" />

<Style.Triggers>
<DataTrigger Binding="{Binding Zastupitel.JePritomen}"
Value="False">
<Setter Property="Background"
Value="Orange" />
Value="{DynamicResource SecondaryHueLightBrush}" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>

<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="True"
<DataGridTextColumn ElementStyle="{StaticResource StyleGridTextCenterVertical}" IsReadOnly="True"
Width="Auto"
Header="Zastupitel"
Binding="{Binding JmenoPrijmeniZastupitele}" />
<DataGridTemplateColumn Header="Volba"
Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Padding="2"
<ComboBox Padding="2 1 1 2"
Margin="0"
IsEnabled="{Binding Path=Zastupitel.JePritomen}"
ItemsSource="{Binding Volby}"
Expand All @@ -77,7 +81,8 @@
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn IsReadOnly="True"
<DataGridTextColumn ElementStyle="{StaticResource StyleGridTextCenterVertical}"
IsReadOnly="True"
Width="Auto"
Header="Poznámka"
Binding="{Binding Poznamka}" />
Expand Down
6 changes: 4 additions & 2 deletions ZZZO/ZZZO/ZZZO.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@
<ApplicationManifest>app.manifest</ApplicationManifest>
<PlatformTarget>x86</PlatformTarget>
<StartupObject>ZZZO.App</StartupObject>
<AssemblyVersion>0.0.1.0</AssemblyVersion>
<FileVersion>0.0.1.0</FileVersion>
<AssemblyVersion>0.0.2</AssemblyVersion>
<ProductVersion>$(AssemblyVersion)</ProductVersion>
<InformationalVersion>$(AssemblyVersion)$(SourceRevisionId)</InformationalVersion>
<Copyright>Martin Rotter</Copyright>
<_SuppressWpfTrimError>true</_SuppressWpfTrimError>
</PropertyGroup>

Expand Down
28 changes: 14 additions & 14 deletions resources/styles/classic.css
Original file line number Diff line number Diff line change
@@ -1,11 +1,21 @@
@import url('https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400..800;1,400..800&display=swap');

/* Targets all the pages */
@page {
size: a4 portrait;
margin: 1cm;
}

body {
font-family: "EB Garamond", serif;
font-optical-sizing: auto;
font-size: 80%;
}

hr {
border: 1px solid black;
}

ol {
list-style: none;
padding-left: 1.5em;
Expand Down Expand Up @@ -39,10 +49,6 @@ h1, h2, h3, h4, h5, h6 {
text-align: center;
}

hr {
border: 1px solid black;
}

.signature > hr {
width: 85%;
border: 1px solid darkslateblue;
Expand All @@ -54,19 +60,19 @@ hr {
height: 1em;
}

.resolution-success {
.resolution-success-icon {
color: limegreen;
}

.resolution-failure {
.resolution-failure-icon {
color: red;
}

.resolution-dontknow {
.resolution-dontknow-icon {
color: orange;
}

.resolution {
.resolution-vote-box {
break-inside: avoid-page;
border-radius: 10px;
border-style: solid;
Expand All @@ -87,10 +93,4 @@ hr {

.text-center {
text-align: center;
}

/* Targets all the pages */
@page {
size: a4 portrait;
margin: 1cm;
}

0 comments on commit 5799573

Please sign in to comment.