moties werkende

Alphons van der Heijden <alphons@heijden.com> 7 Dec 2022, 17:32
d2b9fa822b42088ad5f96a1a7e7a7e1b2e01c4b1
9 files changed
  • src/OpenKamer.LogicControllers/Web/Doucumenten.cs
  • src/OpenKamer.LogicControllers/Web/HelloWorld.cs
  • src/OpenKamer.WebCore/OpenKamer.WebCore.csproj
  • src/OpenKamer.WebCore/wwwroot/Default.htm
  • src/OpenKamer.WebCore/wwwroot/Default.js
  • src/OpenKamer.WebCore/wwwroot/Moties.css
  • src/OpenKamer.WebCore/wwwroot/Moties.htm
  • src/OpenKamer.WebCore/wwwroot/Moties.js
  • src/OpenKamer.WebCore/wwwroot/Ui.css
diff --git a/src/OpenKamer.LogicControllers/Web/Doucumenten.cs b/src/OpenKamer.LogicControllers/Web/Doucumenten.cs
index 31d84bc..7b942dc 100644
--- a/src/OpenKamer.LogicControllers/Web/Doucumenten.cs
+++ b/src/OpenKamer.LogicControllers/Web/Doucumenten.cs
@@ -171,4 +171,182 @@ public partial class WebController : ControllerBase
List
});
}
+
+
+ [HttpPost]
+ [Route("~/api/Moties2")]
+ public async Task<IActionResult> Moties2()
+ {
+ // documentType
+ // onderwerp: { $regex: '.*Motie van het lid Bromet.*', $options: 'i' },
+ var a = @"
+[
+{
+ $match:
+ {
+ verwijderd: false,
+ soort: 'Motie',
+ datum: { $gte:ISODate(""2022-11-01"") , $lt:ISODate(""2022-12-31"") }
+ }
+},
+
+{
+ $lookup:
+ {
+ localField: 'kamerstukdossier.ref',
+ from: 'kamerstukdossierType',
+ foreignField: '_id',
+ as: 'kamerstukdossier',
+ pipeline:
+ [
+ { $match: { verwijderd: false } },
+ {
+ $project:
+ {
+ verwijderd:0,
+ _id:0,
+ }
+ }
+ ]
+ }
+},
+{ $unwind: '$kamerstukdossier' },
+
+{
+ $lookup:
+ {
+ localField: 'huidigeDocumentVersie.ref',
+ from: 'documentVersieType',
+ foreignField: '_id',
+ as: 'huidigeDocumentVersie',
+ pipeline:
+ [
+ { $match: { verwijderd: false } },
+ {
+ $project:
+ {
+ verwijderd:0,
+ _id:0,
+ document:0
+ }
+ }
+ ]
+ }
+},
+{ $unwind: '$huidigeDocumentVersie' },
+
+{
+ $lookup:
+ {
+ localField: 'zaak.ref',
+ from: 'zaakType',
+ foreignField: '_id',
+ as: 'zaak',
+ pipeline:
+ [
+ {
+ $lookup:
+ {
+ localField: '_id',
+ from: 'besluitType',
+ foreignField: 'zaak.ref',
+ as: 'besluiten',
+ pipeline:
+ [
+ { $match: { verwijderd: false, besluitSoort: {$nin: [ null, 'Ingediend' ]} } },
+ {
+ $project:
+ {
+ agendapunt:0,
+ verwijderd:0,
+ zaak:0,
+ status:0,
+ agendapuntZaakBesluitVolgorde:0,
+ bijgewerkt:0
+ }
+ },
+ {
+ $lookup:
+ {
+ localField: '_id',
+ from: 'stemmingType',
+ foreignField: 'besluit.ref',
+ as: 'stemmingen',
+ pipeline:
+ [
+ { $match: { verwijderd: false } },
+ {
+ $project:
+ {
+ _id: 0,
+ verwijderd:0,
+ sidActorLid:0,
+ sidActorFractie: 0,
+ fractie:0,
+ bijgewerkt:0,
+ besluit:0,
+ vergissing:0,
+ persoon:0
+ }
+ },
+ {
+ $sort: { soort: -1 , fractieGrootte:-1, actorNaam : 1}
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ $project:
+ {
+ _id:0,
+ kamerstukdossier:0,
+ agendapunt:0
+ }
+ },
+ { $unwind: '$besluiten' }
+ ]
+ }
+},
+{ $unwind: '$zaak' },
+
+
+{
+ $project:
+ {
+ _id : 1,
+ onderwerp:1,
+
+ documentNummer:1,
+ date: { $substr: [ '$datum', 0, 10 ] },
+ nr: '$kamerstukdossier.nummer',
+ toevoeging: '$kamerstukdossier.toevoeging',
+ volgnummer:1,
+
+ besluitTekst: '$zaak.besluiten.besluitTekst',
+ stemmingsSoort: '$zaak.besluiten.stemmingsSoort',
+ voor: { $filter: { input: '$zaak.besluiten.stemmingen', as: 'x', cond: { $eq: [ '$$x.soort', 'Voor' ] }} },
+ tegen: { $filter: { input: '$zaak.besluiten.stemmingen',as: 'x', cond: { $eq: [ '$$x.soort', 'Tegen' ] } } },
+ onbekend: { $filter: { input: '$zaak.besluiten.stemmingen', as: 'x', cond: { $eq: [ '$$x.soort', 'Niet deelgenomen' ] } }}
+ }
+},
+{
+ $sort: { date:-1, _id:1 }
+}
+{ $skip: 0 },
+{ $limit: 100 }
+]
+";
+
+ var List = await db.GetCollection("documentType").Aggregate(a).ToListAsync();
+
+ return Ok(new
+ {
+ List
+ });
+ }
+
+
}
diff --git a/src/OpenKamer.LogicControllers/Web/HelloWorld.cs b/src/OpenKamer.LogicControllers/Web/HelloWorld.cs
index c81aa90..07c39a2 100644
--- a/src/OpenKamer.LogicControllers/Web/HelloWorld.cs
+++ b/src/OpenKamer.LogicControllers/Web/HelloWorld.cs
@@ -14,7 +14,7 @@ public partial class WebController : ControllerBase
await HttpContext.Session.CommitAsync();
- var Version = $"MongoDB.MvcCore.BsonJsonSerializer: {typeof(BsonJsonSerializer).Assembly.GetName().Version})";
+ var Version = $"MongoDB.MvcCore.BsonJsonSerializer: {typeof(BsonJsonSerializer).Assembly.GetName().Version}";
return Ok(new
{
diff --git a/src/OpenKamer.WebCore/OpenKamer.WebCore.csproj b/src/OpenKamer.WebCore/OpenKamer.WebCore.csproj
index 6581a60..e75e239 100644
--- a/src/OpenKamer.WebCore/OpenKamer.WebCore.csproj
+++ b/src/OpenKamer.WebCore/OpenKamer.WebCore.csproj
@@ -16,4 +16,11 @@
<ProjectReference Include="..\OpenKamer.LogicControllers\OpenKamer.LogicControllers.csproj" />
</ItemGroup>
+ <ItemGroup>
+ <Content Update="wwwroot\Moties.htm">
+ <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </Content>
+ </ItemGroup>
+
</Project>
diff --git a/src/OpenKamer.WebCore/wwwroot/Default.htm b/src/OpenKamer.WebCore/wwwroot/Default.htm
index b70be0d..4162b74 100644
--- a/src/OpenKamer.WebCore/wwwroot/Default.htm
+++ b/src/OpenKamer.WebCore/wwwroot/Default.htm
@@ -26,6 +26,8 @@
<div><span id="Moties" class="ui-btn">Moties</span></div>
+ <div><a href="moties.htm" class="ui-btn">Moties (filtered)</a></div>
+
<div id="Output"></div>
@@ -111,5 +113,7 @@
</table>
</script>
+
+
</body>
</html>
diff --git a/src/OpenKamer.WebCore/wwwroot/Default.js b/src/OpenKamer.WebCore/wwwroot/Default.js
index f15baf2..85f0dbe 100644
--- a/src/OpenKamer.WebCore/wwwroot/Default.js
+++ b/src/OpenKamer.WebCore/wwwroot/Default.js
@@ -4,6 +4,7 @@ const Entities = $id("Entities");
const Output = $id("Output");
const TemplateList = $id("TemplateList");
const TemplateObjectProperties = $id("TemplateObjectProperties");
+const TemplateMoties = $id("TemplateMoties");
(function ()
{
@@ -82,4 +83,4 @@ function Moties()
{
Output.Template(TemplateObjectProperties, this, false);
});
-}
\ No newline at end of file
+}
diff --git a/src/OpenKamer.WebCore/wwwroot/Moties.css b/src/OpenKamer.WebCore/wwwroot/Moties.css
new file mode 100644
index 0000000..3869e94
--- /dev/null
+++ b/src/OpenKamer.WebCore/wwwroot/Moties.css
@@ -0,0 +1,115 @@
+html
+{
+ box-sizing: border-box;
+}
+
+*, *:before, *:after
+{
+ box-sizing: inherit;
+}
+
+body
+{
+ line-height: 1;
+ font-family: Arial;
+ padding: 10px;
+ overflow-x: auto;
+}
+
+a
+{
+ text-decoration: none;
+ color: dimgrey;
+}
+
+ a:hover
+ {
+ color: #444;
+ }
+
+#NetProxySpinner
+{
+ display: none;
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ margin-top: -25px;
+ margin-left: -25px;
+ z-index: 1;
+}
+
+
+.stopfloating
+{
+ clear: both;
+}
+
+
+.Flexing
+{
+ display: flex;
+ flex-wrap: wrap;
+}
+
+.TableNormal
+{
+ border-collapse: separate;
+ border-spacing: 0;
+ border: 1px solid #ddd;
+ border-radius: 10px;
+ padding: 4px;
+ min-width: 600px;
+}
+
+ .TableNormal td, .TableNormal th
+ {
+ border: 1px solid #ddd;
+ apadding: 8px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ height: 26px;
+ }
+
+ .TableNormal th
+ {
+ padding-top: 12px;
+ padding-bottom: 12px;
+ text-align: left;
+ background-color: #4CAF50;
+ color: white;
+ }
+
+ .TaableNormal tr:hover
+ {
+ background-color: #c0c0ff;
+ cursor: pointer;
+ }
+
+
+
+.l
+{
+ float: left;
+}
+
+.r
+{
+ float: right;
+}
+
+.tt
+{
+ vertical-align: top;
+ width: 400px
+}
+
+ .tt div:nth-child(odd)
+ {
+ background-color: #f2f2f2;
+ }
+
+ .tt div
+ {
+ padding:5px;
+ }
\ No newline at end of file
diff --git a/src/OpenKamer.WebCore/wwwroot/Moties.htm b/src/OpenKamer.WebCore/wwwroot/Moties.htm
new file mode 100644
index 0000000..c0ae1c5
--- /dev/null
+++ b/src/OpenKamer.WebCore/wwwroot/Moties.htm
@@ -0,0 +1,84 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <title>Just Testing</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta charset="utf-8" />
+
+ <!-- nugetpackage netproxy -->
+ <link href="css/netproxyspinner.css" rel="stylesheet" />
+ <script src="scripts/macros.js" defer></script>
+ <script src="scripts/netproxy.js" defer></script>
+
+ <link href="Moties.css" rel="stylesheet" />
+ <script src="Moties.js" defer></script>
+
+</head>
+<body>
+ <img src="images/netproxyspinner.gif" id="netproxyspinner" />
+
+ <div id="Version"></div>
+
+ <div id="Output"></div>
+
+ <script type="text/template" id="TemplateMoties">
+ {{ this.List.forEach(function (motie) { }}
+
+ <h3>{{=motie.onderwerp}}</h3>
+
+ <h4><a href="https://www.tweedekamer.nl/downloads/document?id={{=motie.documentNummer}}">{{=motie.documentNummer}}</a> datum:{{=motie.date}} motie:{{=motie.nr}}-{{=motie.volgnummer}}</h4>
+
+ <p>{{=motie.besluitTekst}} - {{=motie.stemmingsSoort}}</p>
+
+ {{ var hoofdelijk = (motie.stemmingsSoort === "Hoofdelijk"); }}
+
+ <table class="TableNormal">
+ <tr>
+ <th>Voor</th>
+ <th>Tegen</th>
+ <th>Onbekend</th>
+ </tr>
+ <tr>
+ <td class="tt">
+ {{ motie.voor.forEach(function (i) { }}
+ <div>
+ {{ if(hoofdelijk) { }}
+ <span class"l">{{=i.actorNaam}} ({{=i.actorFractie}})</span>
+ {{ } else { }}
+ <span class"l">{{=i.actorNaam}}</span>
+ <span class="r">{{=i.fractieGrootte}}</span>
+ {{ } }}
+ </div>
+ {{ }); }}
+ </td>
+ <td class="tt">
+ {{ motie.tegen.forEach(function (i) { }}
+ <div>
+ {{ if(hoofdelijk) { }}
+ <span class"l">{{=i.actorNaam}} ({{=i.actorFractie}})</span>
+ {{ } else { }}
+ <span class"l">{{=i.actorNaam}}</span>
+ <span class="r">{{=i.fractieGrootte}}</span>
+ {{ } }}
+ </div>
+ {{ }); }}
+ </td>
+ <td class="tt">
+ {{ motie.onbekend.forEach(function (i) { }}
+ <div>
+ {{ if(hoofdelijk) { }}
+ <span class"l">{{=i.actorNaam}} ({{=i.actorFractie}})</span>
+ {{ } else { }}
+ <span class"l">{{=i.actorNaam}}</span>
+ <span class="r">{{=i.fractieGrootte}}</span>
+ {{ } }}
+ </div>
+ {{ }); }}
+ </td>
+ </tr>
+ </table>
+ {{ }); }}
+ </script>
+
+</body>
+</html>
diff --git a/src/OpenKamer.WebCore/wwwroot/Moties.js b/src/OpenKamer.WebCore/wwwroot/Moties.js
new file mode 100644
index 0000000..4b47a2a
--- /dev/null
+++ b/src/OpenKamer.WebCore/wwwroot/Moties.js
@@ -0,0 +1,43 @@
+'use strict';
+
+const Output = $id("Output");
+const Version = $id("Version");
+const TemplateMoties = $id("TemplateMoties");
+
+(function ()
+{
+ PageEvents();
+ Init();
+})();
+
+function PageEvents()
+{
+ document.addEventListener("click", function (e)
+ {
+ if (typeof window[e.target.id] === "function")
+ window[e.target.id].call(e, e);
+ });
+}
+
+function Init()
+{
+ HelloWorld();
+ Moties2();
+}
+
+function HelloWorld()
+{
+ netproxy("./api/HelloWorld", null, function ()
+ {
+ Version.innerText = this.Version;
+ });
+
+}
+
+function Moties2()
+{
+ netproxy("./api/Moties2", {}, function ()
+ {
+ Output.Template(TemplateMoties, this, false);
+ });
+}
diff --git a/src/OpenKamer.WebCore/wwwroot/Ui.css b/src/OpenKamer.WebCore/wwwroot/Ui.css
index 98a8d8e..1125e56 100644
--- a/src/OpenKamer.WebCore/wwwroot/Ui.css
+++ b/src/OpenKamer.WebCore/wwwroot/Ui.css
@@ -2,7 +2,7 @@
body
{
- overflow-x: hidden;
+ aoverflow-x: hidden;
width: 100%;
box-sizing: border-box;
}