Merge branch 'vnext' of https://github.com/pazof/yavsc into vnext

* 'vnext' of https://github.com/pazof/yavsc:
  Formatting
  no yield return for arrays: Json serialyzer fails to do it.
  pro net
  private chat
  pv test succeeded
  switch pub chan<->private
main
Paul Schneider 9 years ago
commit 29b6d75086
3 changed files with 35 additions and 24 deletions

@ -24,7 +24,7 @@ namespace Yavsc.Controllers
[HttpGet("users")] [HttpGet("users")]
public IEnumerable<ChatUserInfo> GetUserList() public IEnumerable<ChatUserInfo> GetUserList()
{ {
List<ChatUserInfo> result = new List<ChatUserInfo>();
var cxsQuery = dbContext.Connections?.Include(c=>c.Owner).GroupBy( c => c.ApplicationUserId ); var cxsQuery = dbContext.Connections?.Include(c=>c.Owner).GroupBy( c => c.ApplicationUserId );
// List<ChatUserInfo> result = new List<ChatUserInfo>(); // List<ChatUserInfo> result = new List<ChatUserInfo>();
@ -37,12 +37,12 @@ namespace Yavsc.Controllers
if (cxs.Count>0) { if (cxs.Count>0) {
var user = cxs.First().Owner; var user = cxs.First().Owner;
yield return new ChatUserInfo { UserName = user.UserName, result.Add(new ChatUserInfo { UserName = user.UserName,
UserId = user.Id, Avatar = user.Avatar, Connections = cxs, UserId = user.Id, Avatar = user.Avatar, Connections = cxs,
Roles = ( userManager.GetRolesAsync(user) ).Result.ToArray() }; Roles = ( userManager.GetRolesAsync(user) ).Result.ToArray() });
} }
} }
return result;
} }
} }
} }

@ -16,14 +16,20 @@
color: black; color: black;
font-family: monospace; font-family: monospace;
font-style: bold; font-style: bold;
background-color: yellow;
} }
</style> </style>
<div class="container"> <div class="container">
<input type="hidden" id="displayname" /> <input type="hidden" id="displayname" />
<div style="float:right; background-color: grey; padding:1em; margin:1em;">
<ul id="userlist" style="float:right;"> <h3>Salons</h3>
<ul><li id="pubChan">Public</li></ul>
<h3>Utilisateurs</h3>
<ul id="userlist" style="list-style-type:none;">
</ul> </ul>
</div>
<ul id="discussion"> <ul id="discussion">
</ul> </ul>
<div style="display: inline-block;"> <div style="display: inline-block;">
@ -52,42 +58,43 @@
<script> <script>
$(function () { $(function () {
var pvuis;
document.userList = [];
var setPrivate = function(li) var setPrivate = function(li)
{ {
$("#sendmessagebox").addClass("hidden"); $("#sendmessagebox").addClass("hidden");
$("#sendpvbox").removeClass("hidden"); $("#sendpvbox").removeClass("hidden");
document.privateChatter = document.userList[$(li).data("usernum")]; pvuis = { CXs: $(li).data("cxids"), UserName: $(li).data("name")};
$('#sendpvdest').html(pvuis.UserName)
$('#sendpvdest').html(document.privateChatter.UserName)
} }
var setPublic = function() var setPublic = function()
{ {
$("#sendmessagebox").removeClass("hidden"); $("#sendmessagebox").removeClass("hidden");
$("#sendpvbox").addClass("hidden"); $("#sendpvbox").addClass("hidden");
document.privateChatter = {};
} }
$('#pubChan').css('cursor','pointer');
$('#pubChan').click(setPublic);
setPublic(); setPublic();
var getUsers = function() { var getUsers = function() {
console.log("Try and get user list ...");
$('#userlist').empty(); $('#userlist').empty();
$('#to').empty(); $('#to').empty();
$.get("/api/chat/users").done( $.get("/api/chat/users").done(
function(users) { function(users) {
$.each(users, function () { $.each(users, function () {
var user = this; var user = this;
console.log(user);
var existent = $('#userlist li').filterByData("name",user.UserName); var existent = $('#userlist li').filterByData("name",user.UserName);
if (existent.length>0) existent.remove(); if (existent.length>0) existent.remove();
var li = $('<li class="user">'+htmlEncode(user.UserName)+'</li>'); var li = $('<li class="user"><img src="/Avatars/'+user.UserName+'.xs.png"> '+htmlEncode(user.UserName)+'</li>');
var cxids = []; var cxids = [];
$.each(user.Connections,function() { $.each(user.Connections,function() {
cxids.push(this.ConnectionId); cxids.push(this.ConnectionId);
}); });
$(li).data("name",user.UserName); $(li).data("name",user.UserName);
$(li).data("cxids",cxids); $(li).data("cxids",cxids);
document.userList.push(user);
$(li).data("usernum",document.userList.length-1);
$(li).css('cursor','pointer'); $(li).css('cursor','pointer');
$(li).click(function(){ $(li).click(function(){
setPrivate(this); setPrivate(this);
@ -133,7 +140,7 @@
ids.push(cxid); ids.push(cxid);
connected.data("cxids",ids); connected.data("cxids",ids);
} else { } else {
var li = $('<li class="user">'+username+'</li>'); var li = $('<li class="user"><img src="/Avatars/'+username+'.xs.png"> '+username+'</li>');
li.data("name",username); li.data("name",username);
li.data("cxids",[cxid]); li.data("cxids",[cxid]);
li.appendTo('#userlist'); li.appendTo('#userlist');
@ -182,8 +189,8 @@ $('#discussion').append('<li class="notif"><i>' + htmlEncode(tag)
$('#sendpv').click(function () { $('#sendpv').click(function () {
// Call the Send method on the hub. // Call the Send method on the hub.
$.each(document.privateChatter.Connections,function () { $.each(pvuis.CXs,function () {
chat.server.sendPV( this.ConnectionId, $('#pv').val()); chat.server.sendPV( this, $('#pv').val());
}); });
// Clear text box and reset focus for next comment. // Clear text box and reset focus for next comment.
$('#pv').val('').focus(); $('#pv').val('').focus();

@ -10,7 +10,7 @@ Ceci est une grosse liste de fonctionnalités, existantes, ou à implémenter, o
✔ Accès aux profiles des intervenants. @done (August 13th 2016, 0:57) ✔ Accès aux profiles des intervenants. @done (August 13th 2016, 0:57)
✔ Demande de devis, spécifiant une date et un lieu, envers un pro (ou "BookQuery", ou "demande de rendez-vous"). @done (August 13th 2016, 0:57) ✔ Demande de devis, spécifiant une date et un lieu, envers un pro (ou "BookQuery", ou "demande de rendez-vous"). @done (August 13th 2016, 0:57)
✔ Notifications commande. @done (September 15th 2016, 15:00) ✔ Notifications commande. @done (September 15th 2016, 15:00)
✔ Rendu html du format Markdown-av (+audio&video). @done (October 6th 2016, 14:32) ✔ Rendu Html du format Markdown-av (+audio&video). @done (October 6th 2016, 14:32)
✔ Rendu Android, via WebKit WebView. @done (October 6th 2016, 14:32) ✔ Rendu Android, via WebKit WebView. @done (October 6th 2016, 14:32)
✔ Salon public. @done (September 28th 2016, 17:58) ✔ Salon public. @done (September 28th 2016, 17:58)
✔ Saisie et soumission basique du devis. @done (October 30th 2016, 21:50) ✔ Saisie et soumission basique du devis. @done (October 30th 2016, 21:50)
@ -49,16 +49,18 @@ Ceci est une grosse liste de fonctionnalités, existantes, ou à implémenter, o
☐ Évaluation de la prestation. ☐ Évaluation de la prestation.
☐ Page d'accueil du mobile: Les alertes, et les derniers événements, donc, les derniers post, les ☐ Page d'accueil du mobile: Les alertes, et les derniers événements, donc, les derniers post, les
dernières inscriptions de prestataire, les annonces corporate dernières inscriptions de prestataire, les annonces corporate
* La selection d'une star: pas de notation à afficher + idem chanteur * La sélection d'une star: pas de notation à afficher + idem chanteur,
les critères : la date, les champs du formulaire de commande: le message, le lieu
☐ depuis le mobile ☐ depuis le mobile
☐ depuis le Web ☐ depuis le Web
* La selection d'un DJ: (rechercher dans / afficher) les samples + idem chanteur * La sélection d'un DJ: (rechercher dans / afficher) les samples + idem chanteur
les critères : la date, les champs du formulaire de commande: le message, le lieu, la tendance musicale
☐ depuis le mobile ☐ depuis le mobile
☐ depuis le Web ☐ depuis le Web
* La selection d'un chanteur: (rechercher dans / afficher) les titres du répértoire * La sélection d'un chanteur: (rechercher dans / afficher) les titres du répertoire
☐ depuis le mobile ☐ depuis le mobile
☐ depuis le Web ☐ depuis le Web
* La selection d'une formation musicale: idem chanteur + (rechercher/afficher) la taille de la formation * La sélection d'une formation musicale: idem chanteur + (rechercher/afficher) la taille de la formation
☐ depuis le mobile ☐ depuis le mobile
☐ depuis le Web ☐ depuis le Web
@ -125,9 +127,11 @@ Ceci est une grosse liste de fonctionnalités, existantes, ou à implémenter, o
en l'enregistrant comme activité fille. Par ailleurs, l'utilisateur peut déclarer plusieurs activités, en l'enregistrant comme activité fille. Par ailleurs, l'utilisateur peut déclarer plusieurs activités,
sous la forme d'une liste, dont le premier élément indique l'activité principale sous la forme d'une liste, dont le premier élément indique l'activité principale
(pour laquelle un code APE doit correspondre). (pour laquelle un code APE doit correspondre).
☐ Le streaming video, de pair à pair ☐ Le streaming vidéo, de pair à pair
☐ Le streaming vidéo public. ☐ Le streaming vidéo public.
## Jalon 5 ## Jalon 5
☐ Conciliation ☐ Conciliation
☐ Le réseau pro : on a des sous-traitants, on leur transmet des demandes de devis en tant que dépendance
d'une demande en cours,cette dernière n'est validable qu'une fois seulement que tous les devis dont elle dépend sont validés.

Loading…